当前位置: 网站首页 > 开发语言 > C/C++

《深度探索C++对象模型》读书笔记(7)

时间:1970-1-1 08:33:31来源: C/C++作者:admin 点击:1次 字体 [ С]

   dynamic_cast运算符也适用于reference身上,然而对于一个non-type-safe-cast,其结果不会与施行于指针的情况一样。一个reference不可以像指针那样“把自己设为0便代表了no object”;若将一个reference设为0,会引起一个临时性对象(拥有被参考到的类型)被产生出来,该临时对象的初值为0,这个reference然后被设定为该临时变量的一个别名。

   因而,如果reference并不真正是某一种derived class,那么可通过丢出一个bad_cast exception进行处理:

 simplify_conv_op(const type &rt)
{
try {
fct &rf = dynamic_cast<fct&>(rt);
}
catch(bad cast) {
// ...
}
}

   当然,你也可以使用typeid运算符来达到同样的目的:

 simplify_conv_op(const type &rt)
{
if(typeid(rt) == typeid(fct))
{
fct &rf = dynamic_cast<fct&>(rt);
}
else { ... }
}


发表评论
验证码:
最新评论
相关文章
最热文章