C++中的typeid和dynamic_cast...
分类:
编程语言 时间:
2014-08-08 21:32:16
阅读次数:
295
C++类型转换分为:隐式类型转换和显式类型转换一、隐式类型转换1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。int ival = 3;double dval = 3.14159;ival + dval;//ival被提升...
分类:
编程语言 时间:
2014-08-07 18:04:40
阅读次数:
275
首先回顾一下C++类型转换:C++类型转换分为:隐式类型转换和显式类型转换第1部分.隐式类型转换何时发生隐式类型转换在下面这些情况下,编译器会自动地转换运算对象的类型:在大多数表达式中,比int类型小的整型值首先提升为较大的整数类型在条件中,非布尔值转换为布尔类型初始化过程中,初始值转换成变量的类型...
分类:
其他好文 时间:
2014-08-05 00:18:18
阅读次数:
275
static_cast 和 const_cast 和 dynamic_cast 和reinterpret_cast的区别。...
分类:
编程语言 时间:
2014-08-03 20:37:55
阅读次数:
263
1. static_cast(expression)可用于存在继承关系的类指针/引用之间的向上向下转换。执行向下转换时没有安全检查(区别于dynamic_cast),所以如果实际类型与目标类型不符合,编译虽然可以通过,但运行时的后果未定义。void*指针转换为实际的指针其他基本类型的隐式转换以及反方...
分类:
编程语言 时间:
2014-08-03 17:46:25
阅读次数:
249
从今天开始,对C++常用技术做个总结。
参考书籍:《C++Primer》、《C++对象模型》、《设计模式》、《Windows核心编程》、《STL解密》。
1. static_cast等四个cast的具体意义
C++类型转换:隐式转换和显式转换。
显式转换:static_cast、dynamic_cast、reinterpret_cast、const_cast。
1.1...
分类:
编程语言 时间:
2014-07-24 10:26:20
阅读次数:
249
《C++ Primer Plus》学习笔记9
第15章 友元、异常和其它
主要内容:
1)友元类
2)友元类方法
3)嵌套类
4)引发异常、try块和catch块
5)异常类
6)运行阶段类型识别(RTTI)
7)dynamic_cast和typeid
8)static_cast、const_cast和reiterpret_cast
1、对于Remote对象的TV...
分类:
编程语言 时间:
2014-07-23 13:31:18
阅读次数:
289
#include #include #include using std::cout;class Grand{ private: int hold; public: Grand(int h=0):hold(h){} virtual void Speak() const {cout Speak(...
分类:
其他好文 时间:
2014-07-21 09:12:31
阅读次数:
232
特殊工具与技术
--运行时类型识别
引:
通过下面两个操作符提供RTTI:
1.typeid操作符,返回指针或引用所指对象的实际类型。
2.dynamic_cast操作符,将基类类型的指针或引用安全地转换为派生类型的指针或引用。
对于带虚函数的类,在运行时执行RTTI操作符,但对于其他类型,在编译时计算RTTI操作符。
当具有基类的引用或指针,但需要执行不是基类组成部分的派生类操作的时候,需要动态的强制类型转换。通常,从基类指针获得派生类行为最好的方法是通过虚...
分类:
编程语言 时间:
2014-07-19 11:45:04
阅读次数:
258
旧式转型
(T) expression 或 T (expression)
新式转型
const_cast(expression)
通常被用来将对象的常量性转除(cast away the constness)
dynamic_cast(expression)
执行“安全向下转型”,也就是用来决定某对象是否归属继承体系中的某个类型。
reinterpret_cast(expression)
执行低级转型 //不太懂??
static_cast(expression)
强迫隐式转换
...
分类:
编程语言 时间:
2014-07-10 23:19:18
阅读次数:
250