码迷,mamicode.com
首页 > 其他好文 > 详细

显式转换

时间:2014-07-22 23:17:36      阅读:383      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   

dynamic_cast

支持运行时识别指针或引用所指向的对象。
从基类指针获得派生类行为最好的办法是<font color="blue">通过虚函数</font>。
但是在某些情况下,无法使用虚函数,就需要手动显示转换。
如果转换指针失败,则置0;如果转换引用失败,则抛出bad_cast异常。
mamicode.com,码迷
 1 if(Extend *ptr = dynamic_cast<Extend *ptr>(ptrBase)
 2 {
 3     // 如果prtBase确实指向Extend,则执行这里
 4 }
 5 else
 6 {
 7     // 如果prtBase并非指向Extend,则执行这里
 8     // 注意:ptr对于这里是不可用的,提高安全性
 9 }
10 
11 void fun(const Base &b)
12 {
13     try
14     {
15         const Derived &d = dynamic_cast<Derived &>(b);
16     }
17     catch(bad_cast)
18     {
19         // 处理引用转换失败情况
20     }
21 }
View Code
 

const_cast

将转换掉表达式的const性质。
mamicode.com,码迷
1 const char *pc_str;
2 char *pc = string_copy(const_cast<char *>(pc_str));
View Code

static_cast

完成那些编译器隐式执行的任何类型的转换,尤其对从大类型转换至小类型时,免去警告提示。
mamicode.com,码迷
1 double d = 97.0;
2 char ch = static_cast<char>(d);
View Code

reinterpret_cast

为操作数的位模式提供较低层次的重新解释。
mamicode.com,码迷
1 int *ip;
2 char *pc = reinterpret_cast<char *>(ip);
View Code

 

显式转换,码迷,mamicode.com

显式转换

标签:style   blog   http   color   使用   os   

原文地址:http://www.cnblogs.com/TaoyzDream/p/3699755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!