#include <iostream> using std::cout; using std::endl; void change(const int * pt, int n); int main() { int pop1=38383; const int pop2=2000; cout << "pop1,pop2: " << pop1 << ", " << pop2 << endl; change(&pop1,-103); change(&pop2,-103); cout << "pop1, pop2: " << pop1 << ", " << pop2 << endl; return 0; } void change(const int * pt, int n) { int *pc; pc=const_cast<int *>(pt); *pc+=n; }
const_cast<type-name> (expression)
type-name必须为指针或应用,而且除了const或volatile特征可以不同外,type_name和expression的类型必须相同。
提供该运算符的原因是,有时候可能需要这样一个值,他在大多数时候是常量,而有时又是可以修改的。在这种情况下,可以将这个值声明为const,并在需要修改它的时候,使用const_cast。但const_cast不是万能的,它可以修改指向一个值的指针,但修改const值的结果是不确定的。