一、指针类型的dynamic_cast
如果一条dynamic_cast语句的转换目标是指针类型并且转换失败了,会返回一个空指针,则判断条件为0,即为false;如果转换成功,指针为非空,则判断条件为非零,即true。
//这样做可以确保类型转换和条件检查在同一条表达式中完成
if(Derived*pd=dynamic_cast<Derived*>(pb))
{
//使用pd指向Derived对象
pd->print_ival();//调用派生类的非虚函数
}
else
{
//使用pb指向额Base对象
……
}
NOTE:我们可以对一个空指针执行dynamic_cast,结果是所需类型的空指针