#include <iostream>using namespace std;class color{ public: virtual void f() { cout << "color::f()" << endl; } };class red : public color{ public: void f() { cout << "red::f()" << endl; } };class blue : public color{ public: void f() { cout << "blue::f()" << endl; } };class other{ public: virtual void f() { cout << "other::f()" << endl; }};int main() { color *pc = new red; blue* pb_dynamic = dynamic_cast<blue*>(pc); blue* pb_static = static_cast<blue*>(pc); cout << "pb_dynamic: " << pb_dynamic << endl; cout << "pb_static: " << pb_static << endl; //pb_dynamic->f(); //pc绑定的是red而不是blue,pb_dynamic为0,调用此句会失败 pb_static->f(); // pc绑定的是red而不是blue,static_cast不识别这些, 而是当做red的函数来处理! other* _other = new other; blue* pbo_dynamic = dynamic_cast<blue*>(_other); //blue* pbo_static = static_cast<blue*>(_other);// _other绑定的是other而不是blue,编译的时候失败 cout << "pbo_dynamic: " << pbo_dynamic << endl; delete pc;delete _other; pc = NULL:_other = NULL; return 0;}//总结:static_cast字面意思是静态转换,编译期间就能判断是否可以转换成功,但是无法识别兄弟指针之间的转换(先提升一个兄弟(red)指针为父指针(color),再向下转换(blue))而dynamic_cast是运行时转换,可以编译通过,但是可以与NULL指针的比较来判断是否转换成功!
C++中关于理解dynamic_cast和static_cast区别的一个极其简单的例 dynamic cast 原理
更多阅读
photoshop 前景色和背景色的应用 前景色和背景色的区别
? ??查了很多资料,前景色和背景色的含义?很是模糊,后来联想到现实中画家的画板,就很清楚了。前景色和背景色只是根据人们画画的效果来分的。把整个画布都用一种颜色填充,就是背景色;工具如画笔,画刷使用的颜色就是前景色。一前一后,很明显。
小说关于史今和伍六一的归宿问题 伍六一史今同人
因为太在意伟大的班长和血性的班副最后过得好不好,我直接翻看了原著小说,三页纸的内容,打字可用了一个半小时,为班长和班副,值了!!兰老不要告我侵发犯其著作权哦,真的是因为喜欢痴迷才摘印一段,下不为例!!而且里边一个字一个标点符
现货交易中外盘和内盘的含义_King 现货内盘外盘
近日较多投资者向king_大漠这厮咨询现货交易中关于外盘和内盘的含义及其用法,为了帮助更多的交易者,king_大漠这厮特地整理了一些关于外盘和内盘的资料和含义,供大家参考学习:内盘:在成交量中以主动性叫卖价格成交的数量,所谓主动性叫买,
劳动法与劳动合同法中关于无固定期限劳动合同规定对比 劳动法和劳动合同法
《劳动法》与《劳动合同法》中关于无固定期限劳动合同规定对比【无固定期限劳动合同前后对比】无固定期限劳动合同,是指用人单位与劳动者约定无确定终止时间的劳动合同,《劳动法》与《劳动合同法》中关于无固定期限劳动合同的定义规
水分散粒剂配方中崩解剂和分散剂的性能研究和应用 塑料分散剂
一 概述水分散粒剂,又名干悬浮剂,是20世纪80年代国际上研究开发成功的农药新剂型和新的制剂加工技术。它是一种可分散在水中的固体制剂。在1986年第六届国际农药化学会议上,水分散粒剂被认为是一种既具有粒剂的一切优点,又具有悬浮剂高