dynamic_cast---动态操作

来源:互联网 发布:网络上贷款不还怎么办 编辑:程序博客网 时间:2024/06/05 09:55

dynamic_cast---动态操作


作用:将基类类型对象的引用或者指针转换为同意继承层次中其他类型的引用或者指针;
注意事项:dynamic_cast在运行时类型检查。分为两个操作:1.验证被请求的转换是否有效 2. 进行转换。

为什么验证工作必须在运行时检查?
答:因为引用或者指针绑定的对象的类型在编译时是未知的,基类的指针(或者引用)可以赋值为派生类对象。

利用C++ primer(4) 647页的例子:

说明: derivedPtr是派生类指针,basePtr是基类指针,功能是将基类的指针转换成派生类的指针,编译的
过程中不检查类型转换,在运行程序的过程中才进行检查。

基类指针转换为派生类指针:
dynamic_cast<派生类指针>(指向基类对象的指针);

积累指针转化为派生类引用:
dynamic_cast<派生类应用>(基类对象);

因为不存在空引用(指针是有空指针的,可以通过空指针0来判断,这点引用不同),所以不可能对引用使用用于指针强制类型转换的检查策略???