C++ const_cast转换符

const_cast可用于把const属性转换掉,但是可以转换的类型只是限于类类型,内置类型不支持

如:

{

const int a = 10; const int* p =&a; cout<<a<<endl; int* q =const_cast<int*> (&a); *q = 11; cout<<a<<endl;

}

打印结果是:10

                  10

 

但是如果改成const string str = "abc"; cout<<str<<endl; string* ptr = const_cast<string*>(&str); *ptr = "edf"; cout<<str<<endl;  

结果是: abc

             edf

 

为了验证是否对于自己定义的类也有同样的效果,在写代码如下:

#include <iostream> using namespace std; class A { public: A():m_a(10){} void disPlay()const{cout<<m_a<<endl;} void set(int a){m_a = a;} private: int m_a; }; int main() { const A a ; a.disPlay(); A* q = const_cast<A*>(&a); q->set(15); q->disPlay(); return 0; } 

 

代码运行结果如下: 10

                          15

 

综上所述,    const_cast只可以用于 类类型对象的装换,只可以用指针把const 类类型的常量修改。

你可能感兴趣的:(C++,String)