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++ 之前的编译器上编写 代码时,才使用这种语法。