c++ const_cast 用法
const_cast类型转换运算符用于去掉变量的const修饰符。
测试下:
void testTypeCast2(void) {const int i = 9527;const int *p = &i;int *p2 = const_cast<int*>(p);*p2 = 250;std::cout << "i = " << i << ", *p2 = " << *p2 << endl << endl; // i = 9527;
}
运行结果:
可以看到,i是const常量,通过const_cast运算符去掉const修饰符后,通过指针还是修改不了其变量值。 这里应该是被编译器优化了,还是用的修改前的常量值。
再测试下:
void testTypeCast2(void) {int m = 9527;const int *p3 = &m;int* p4 = const_cast<int*>(p3);*p4 = 250;std::cout << "m = " << m << ", *p4 = " << *p4 << endl << endl; // m = 250, *p4 = 250
}
打印:
可以看出,m本来是int变量,没有const修饰,其指针给const int* 类型指针赋值,再通过const_cast运算符去掉const修饰符,这时可以通过指针修改m的值。