关于const_cast

(转载)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”转换为“intconst 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


 

你可能感兴趣的:(Const)