Scott Meyer
在他的书Effective C++
中说dynamic_cast
用于执行向下或跨继承层次结构的安全转换。也就是说,您使用 dynamic_cast 将基类对象的指针或引用转换为派生或同级基类对象的指针或引用,这样您就可以确定转换是否成功。
失败的转换由空指针(转换指针时)或异常(转换引用时)指示。
我想得到两个代码片段,在可以指示转换指针和转换引用的情况下显示失败的转换。
最佳答案
对于指针,这是一个简单的空检查:
A* a = new A();
B* b = dynamic_cast<B*>(a);
if (b == NULL)
{
// Cast failed
}
对于引用,你可以捕获:
try {
SomeType &item = dynamic_cast<SomeType&>(obj);
}
catch(const std::bad_cast& e) {
// Cast failed
}
关于c++ - 如何使用 dynamic_cast 运算符识别失败的强制转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11510128/