引言
C风格的类型转换有不少的缺点:
1. 它可以在任意类型之间转换,这两种转换之间的差别是巨大的,但是传统的c语言风格的类型转换没有区分这些.
2. C风格的转换不容易查找,他由一个括号加上一个标识符组成,(TYPE)EXPRESSION 而这样的东西在C++程序里一大堆。
C++为了克服这些缺点,引进了4新的类型转换操作符,他们是 static_cast 、const_cast 、dynamic_cast 、reinterpret_cast
一. const_cast
const_cast 用于去除 const(volatile)属性,将只读变为可读写
const_cast只针对指针、引用和this指针,其他情况的话就会出错,如下代码所示:
int n = 5;
int *k1 = const_cast<int*>(&n); //指针
*k1 = 1;
int &k2 = const_cast<int&>(n); //引用
k2 = 2;
int k3 = const_cast<int>(n); //编译出错
k3 = 1; //编译出错
注意:C++里是const,就是const,外界千变万变,我就不变<