- 定义:沿着继承层次结构向上、向下和横向安全地将指针和引用转换为类。
- 表达式:
1 | dynamic_cast < new-type > ( expression ) |
new-type必须是类的指针、引用或者void*
如果type-id是类指针类型,那么expression也必须是一个指针,如果type-id是一个引用,那么expression也必须是一个引用。
此处引用:[dynamic_cast彻底明白了~][https://blog.csdn.net/hongkangwl/article/details/21161713]
- 如果强制转换成功,dynamic_cast将返回一个类型为新型的值。如果转换失败,并且new-type是指针类型,那么它将返回该类型的空指针。如果转换失败,并且new-type是引用类型,则抛出一个与std::bad_cast类型的处理程序匹配的异常。
- 注意:
- dynamic_cast在将父类cast到子类时,父类必须要有虚函数,否则编译器会报错。
- dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。
- 在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;
- 在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。
转载原文链接:[dynamic_cast用法总结][https://blog.csdn.net/weixin_44212574/article/details/89043854]
- 例子
1 |
|