基础数据类型
const_cast 仅仅是深层拷贝改变,而不是改动之前的值
如果需要使用改动后的值,需要通过指针或者引用来间接使用
const int n = 5;
const string s = "MyString";// cosnt_cast 针对指针,引用,this指针
// const_cast 仅仅是深层拷贝改变,而不是改动之前的值
int *k = const_cast<int *>(&n);
*k = 123;
cout << n << endl; // 5
cout << *k << endl; // 123int &kRef = const_cast<int &>(n);
kRef = 456;
cout << n << endl; // 5
cout << kRef << endl; // 456
类
不明确
// 在类的非const成员函数中,this的类型为一般形式,即 A * const;
// 在类的const成员函数,this的类型为:const A * const,即指向常量对象的常量指针。class CTest {
public:mutable int m_ntest;CTest() : m_ntest(2){};void func1(int val) const{// error: invalid conversion from 'const void*' to 'void*' [-fpermissive]// void *p = this;// m_ntest = val;const_cast(CTest *)(this)->m_ntest = val;}
};