dynamic_cast支持运行时识别指针或引用所指向的对象。从基类指针获得派生类行为最好的办法是通过虚函数。但是在某些情况下,无法使用虚函数,就需要手动显示转换。如果转换指针失败,则置0;如果转换引用失败,则抛出bad_cast异常。
1 if(Extend *ptr = dynamic_cast...
分类:
其他好文 时间:
2014-07-22 23:17:36
阅读次数:
383
看完EffectiveC++的关于转型的章节,顿时认为周围的代码都处在悬崖边上~~C的旧式转型:inta = 10; double b =
(double)a;对于C++的四种转型函数,const_cast去掉对象的常量性(仅仅此一个操作符有此功能!)dynamic_cast一般用于继承体系中某对象...
分类:
编程语言 时间:
2014-05-31 19:20:35
阅读次数:
288
dynamic_cast
(expression)dynamic_cast运算符,应该算是四个里面最特殊的一个,因为它涉及到编译器的属性设置,而且牵扯到的面向对象的多态性跟程序运行时的状态也有关系,所以不能完全的使用传统的转换方式来替代。但是也因此它是最常用,最不可缺少的一个运算符。与static....
分类:
编程语言 时间:
2014-05-29 19:08:47
阅读次数:
508
boolhandle(constosgGA::GUIEventAdapter& ea,
osgGA::GUIActionAdapter& aa){osgViewer::Viewer* viewer
=dynamic_cast(&aa);}bool ControlMan::handle(const o...
分类:
其他好文 时间:
2014-05-28 21:26:06
阅读次数:
670
RTTI(Run-Time Type
Information,通过运行时类型信息)程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型.RTTI提供了以下两个非常有用的操作符:(1)typeid操作符,返回指针和引用所指的实际类型。(2)dynamic_cast操作符,将基类类型...
分类:
编程语言 时间:
2014-05-19 15:51:05
阅读次数:
312
1.什么是RTTI?
RTTI 是“Runtime Type Information”的缩写,意思是:运行时类型信息。它提供了运行时确定对象类型的方法。允许“用指向基类的指针或引用来操纵对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在 c++中,为了支持 RTTI 提供了两个操作符 :
1 dynamic_cast 操作符:它允许在运行时刻进行类型转换,从而使程...
分类:
编程语言 时间:
2014-05-15 11:19:41
阅读次数:
407
1、static_cast和dynamic_cast的类型检查
static_cast的类型检查:只检查无关类之间的转换 CBaseY* pY1 = static_cast(pX); // 错误,编译未通过,
类型指向是无关的 (解释:指针变量PX是CBaseX类,现在要将其转换为CBaseY类(和...
分类:
其他好文 时间:
2014-05-06 00:34:38
阅读次数:
295
场景:
1. C++引入了dynamic_cast 这种类型识别的强制转换,对识别错误的程序是有好处的,建议能用的地方就用,它能在转换错误时返回0或抛出异常,比起C的旧强制转换
执行转换了不对类型依旧不会报错可靠些,因为这类错误如果发生了,其实很难找出来。...
分类:
编程语言 时间:
2014-05-03 21:55:11
阅读次数:
333
首先回顾一下C++类型转换:C++类型转换分为:隐式类型转换和显式类型转换第1部分.隐式类型转换又称为“标准转换”,包括以下几种情况:1)
算术转换(Arithmetic conversion) : 在混合类型的算术表达式中,
最宽的数据类型成为目标转换类型。intival=3;doubledval...
分类:
其他好文 时间:
2014-05-01 05:18:59
阅读次数:
321