const_cast是C++此中一种类型转换运算符,它只有一种用途,就是改变值为const 或 volatile, 因为编程时会无意间改变变量的类型,是以利用const_cast运算符会加倍平安!下面将申明如何利用const_cast进行类型转换以及它存在的局限!
起首界说基类CLow,然后实现对应代码
然后界说子类CHigh, 担当CLow, 然后实现对应代码
完当作上面的根本代码之后,本家儿函数输入以下测试代码,界说一个const的指针,然后经由过程const_cast进行转换,删除const标签
点窜本家儿函数的测试代码,经由过程const_cast将const High * 转换为const Low *
点击运行调试,编译报错,无法转换,申明const_cast不克不及进行分歧类型的转换,只能改变const或者volatile特征
我们也可以经由过程采用通用的方式来进行强制类型转换,可是如许有可能会改变类型,因为可以或许将const CHigh *改为CLow *而没有编译报错,是以平安性不敷
const_cast可以去失落const标签,可是纷歧心猿意马能过改变变量的值,下面举个例子进行申明,起首界说如下函数,转换const int *的类型为 int * , 然后对值进行点窜
本家儿函数添加如下的测试代码,注重界说了两个变量一个示int, 另一个是const int
最后运行的成果如下所示,从中可以看出,iNum1的值改变,而iNum2的值没有改变,所以仅当指标的目的的值不是const时,才能对值进行改变
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!