守望远方

热爱生活 热爱工作 守望远方
《C++ Primer》笔记-强制类型转换

1.C++的新式强制类型转换,mark一下。

显式转换也称为强制类型转换(cast),包括以下列名字命名的强制类型转换操

作符:static_cast、dynamic_cast、const_cast 和 reinterpret_cast。 

 ival *= static_cast<int>(dval); // converts dval to int

命名的强制类型转换符号的一般形式如下:

     cast-name<type>(expression);

其中 cast-name 为 static_cast、dynamic_cast、const_cast 和 reinterpret_cast 之一,type 为转换的目标类型,而 expression 则是被强制 转换的值。强制转换的类型指定了在 expression 上执行某种特定类型的转换。 

1.1  dynamic_cast

dynamic_cast 支持运行时识别指针或引用所指向的对象。 

1.2  const_cast

const_cast ,顾名思义,将转换掉表达式的 const 性质。 

1.3  static_cast

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

1.4  reinterpret_cast

reinterpret_cast 通常为操作数的位模式提供较低层次的重新解释。 

1.5  旧式强制类型转换 

char *pc = (char*) ip; 

效果与使用 reinterpret_cast 符号相同,但这种强制转换的可视性比较 差,难以跟踪错误的转换。 

虽然标准 C++ 仍然支持旧式强制转换符号,但是我们 建议,只有在 C 语言或标准 C++ 之前的编译器上编写 代码时,才使用这种语法。 

posted on 2012-12-28 16:43  守望远方  阅读(257)  评论(0编辑  收藏  举报