C++标准转换运算符const_cast (二)

2014-11-24 12:55:06 · 作者: · 浏览: 5
r: invalid conversion from 'int' to 'int*'

Printer(const_cast(&consatant));

return 0;

}出现这种情况的原因,可能是我们所调用的方法是别人写的。还有一种我能想到的原因,是出现在const对象想调用自身的非const方法的时候,因为在类定义中,const也可以作为函数重载的一个标示符。有机会,我会专门回顾一下我所知道const的用法,C++的const真的有太多可以说的了。

在IBM的C++指南中还提到了另一种可能需要去const的情况:

#include

using namespace std;

int main(void) {

int variable = 21;

int* const_p = &variable;

int* modifier = const_cast(const_p);

*modifier = 7

cout << "variable:" << variable << endl;

return 0;

}

/**

variable:7

**/

我们定义了一个非const的变量,但用带const限定的指针去指向它,在某一处我们突然又想修改了,可是我们手上只有指针,这时候我们可以去const来修改了。上边的代码结果也证实我们修改成功了。

不过我觉得这并不是一个好的设计,还是应该遵从这样的原则:使用const_cast去除const限定的目的绝对不是为了修改它的内容,只是出于无奈。(如果真像我说是种无奈,似乎const_cast就不太有用到的时候了,但的确我也很少用到它)