static_cast vs dynamic_cast
2016-03-01 23:26
239 查看
C++基础——C++风格的类型转换(static_cast、const_cast、dynamic_cast、reinterpret_cast)
我们有如下的测试类:
我们首先来看如下的基类指针和类型转换:
我们有如下的测试类:
class B { public: virtual void foo() {} / 虚函数构成多态关系 }; class D :public B {};
我们首先来看如下的基类指针和类型转换:
B* pB = new D; // 父类指针,指向子类对象 D* pD1 = static_cast<D*>(pB); // vaild ! d1 有效且正确 D* pD2 = dynamic_cast<D*>(pB); // valid ! d2 有效且正确
static_cast的安全性面临挑战的例子发生在:
B* pB = new B; // 父类指针,指向父类对象 D* pD1 = static_cast<D*>(pB); // 通过,但 pD1 访问属于D的内容时,无效,属于未定义行为; D* pD2 = dynamic_cast<D*>(pB); // 转换失败,pD2 是 nullptr
References
[1] Regular cast vs. static_cast vs. dynamic_cast [duplicate]相关文章推荐
- 【微积分】 01 - 数学的屠龙刀
- Java排序二:选择排序
- 图片下载添加进度条
- Android里TextView中显示不下的文字转而显示省略号
- 常见围棋软件资源整理
- 常见围棋软件资源整理
- 设计模式——观察者模式
- ProgressDialog进度对话框使用方法
- C++ namespace功能总结
- TOEFL 学习笔记(writing 8)
- 玩转AI(Adobe illustrator)——小西瓜(4)
- 新技术文章收集
- 一名小白理清关于Web的一些基本概念
- POJ 1082 Calendar Game(找规律博弈)
- 任一个英文的纯文本文件0004.txt,统计其中的单词(不区分大小写)出现的个数
- Java排序一:冒泡排序
- Consumer closed input channel or an error occurred/Channel is unrecoverably broken and will be dispo
- LeetCode 74 Search a 2D Matrix(搜索2D矩阵)
- C 语言构造hash table 解 LC majority element问题
- EL操作 web 对象的常用方法