您的位置:首页 > 其它

动态运行时类型的显式转换

2015-06-08 16:56 239 查看
《effective C++》中第九章的内容,稍稍加上自己的理解。

C++中,显式转换也称为强制类型转换(cast),包括以下列名字命名的强制类型转换操作符:static_cast、dynamic_cast、const_cast、reinterpret_cast。

一般形式: cast-name<type>(expression)

dynamic_cast:

该运算符把变量转换成type类型的对象,但type必须是类的指针、类的引用或者void*。若type为指针类型,则expression也必须是指针类型,(引用类型同理)。

dynamic_cast操作符一次执行两个操作:验证被请求的转换是否有效;实际转换。

dynamic_cast主要用户类层次间的上行转换和下行转换。

static_cast:

编译器隐式执行的任何类型转换都可以由static_cast显示完成。

static_cast可完成的类型转换:1,类型间所有的隐式转换。2,类层次间的下行转换(把基类指针或引用转换成子类指针或引用)。

但是static_cast的完成下行转换,没有动态类型检查,所以不安全(dynamic_cast的转换要进行动态类型检查)。

const_cast:

改变变量的const性质。添加或删除const属性。

reinterpret_cast:

在引入命名的强制类型转换操作符之前,显示强制转换用圆括号将类型括起来实现。

int *ip;

char *pc=(char*) ip;

等价于

int *ip;

char *pc=reinterpret_cast<char *>(ip);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: