const_cast操作符可以强置去除const指针的const属性。但对简单变量,程序往往作出优化。

如下面的程序:

class A{
public:
 int a;
 A():a(1){}
};
int main(){
 const int a=1;
 int* b=const_cast<int*>(&a);
 *b=2;
 cout<<*a<<endl;

 const A ca=A();
    A* cb=const_cast<A*>(&ca);
 cb->a=2;
 cout<<ca.a<<endl;
}

结果输出:

1

2

 

而如果对简单变量new到堆上的话,就可以改掉原来的值了

class A{
public:
 int a;
 A():a(1){}
};
int main(){
 const int* a=new int(1);
 int* b=const_cast<int*>(a);
 *b=2;
 cout<<*a<<endl;

 const A ca=A();
    A* cb=const_cast<A*>(&ca);
 cb->a=2;
 cout<<ca.a<<endl;
}

程序结果为:

posted on 2009-01-11 10:59  CUCmehp(likesmiles)  阅读(321)  评论(2编辑  收藏  举报