摘要: 四、reinterpret_cast(参考文献2中的作者总结了一下三个用法:)1. 任意指针(或引用)类型之间的转换;2. 以及指针与足够大的整数类型之间的转换;3. 从整数类型(包括枚举类型)到指针类型,无视大小。reinterpret_cast 虽然很强大,但是使用时要特别小心。这个操作符一般用在内存池管理中。下面给个例子: 1 struct node 2 { 3 int na; 4 char nb; 5 char * nc; 6 node * pNextNode; 7 explicit node() 8 { 9 na... 阅读全文
posted @ 2012-09-17 21:06 yaozhaoyz 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 三、static_caststatic_cast的用途有3个:1. 基本数据类型之间的相互转化;2. 派生类指针或引用 和 基类指针或引用的相互转化。(dynamic_cast在把基类指针转化成派生类指针时,会编译错误;而static_cast不会提示编译错误,但是这种转化是不安全的。)3. 各种指针类型 转换成 void *类型. (如果使用static_cast把void*类型转化为其它指针类型,编译器不会报错,但是转化行为不安全。) 1 class CBase {public: int bb;}; 2 class CDerived: public CBase {public:int dd 阅读全文
posted @ 2012-09-17 20:48 yaozhaoyz 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 二、dynamic_castdynamic_cast仅允许把 指针类型或引用类型 转换成 对象,从而获得一个完整的对象。通常的应用场景是,把派生类的指针转换成基类的指针。看以下程序dynamic_cast.cpp: 1 int main(){ 2 CBase b; CBase* pb; 3 CDerived d; CDerived* pd; 4 pb = dynamic_cast<CBase*>(&d); // ok: derived-to-base 5 pd = dynamic_cast<CDerived*>(&b);... 阅读全文
posted @ 2012-09-17 17:34 yaozhaoyz 阅读(367) 评论(0) 推荐(0) 编辑