(转载)http://www.eefocus.com/yw0520205036/blog/13-04/292659_a28d8.html
关于const_cast
关于const_cast此知识点,《C++ Primer》一书中讲得不够透彻,予以补充。
本文部分内容摘自博主kevinzhangyang博客,
博客链接:http://blog.csdn.net/kevinzhangyang/article/details/6638521,非常感谢博主的知识分享!
运行环境:VS2005
形式const_cast(expression),用来修改类型的const或volatile属性,实际应用中,主要用于移除const,用const_cast来执行其他任何类型转换,都会引起编译错误。
主要为以下几点:
将(const)pointer-to-const转化为(const)pointer-to-nonconst;
将referece-to-const转化为reference-to-nonconst;
不能将const对象转换为nonconst对象;
Eg.
const int k = 3; int m = const_cast<</span>int>(k); error C2440: “const_cast”: 无法从“const int”转换为“int” const int i = 3; const_cast<</span>int&>(i) = 5; //引用 const int &j = i; cout << j << endl; //5 cout << i << endl; //3 const int i = 0; *const_cast<</span>int*>(&i) = 1; const int *p = &i; cout << *p << endl; //1