在C++中,被const修飾的變量,表示其不可變。當然C++提供了類型轉換操作符const_cast,用來將變量的const屬性臨時性地去掉。
如果在一個類裡面有一個const成員變量,我們如何在成員函數中修改它呢?
class Test
{
public:
const int a;
public:
Test():a(0){}
};void Test::SetA(int _a)
{
const_cast(a) = _a;
}
void Test::SetA(int _a) const
{
const_cast(a) = _a;
}
class Test
{
public:
const int a;
int *ptr;
int &ref;
public:
Test():a(0), ptr(const_cast(&a)), ref(const_cast(a)){}
void SetA(int _a)
{
const_cast(a) = _a;
}
};
int main()
{
Test t;
cout << t.a << endl;
//0
*t.ptr = 1;
cout << t.a << endl;
//1
t.ref = 2;
cout << t.a << endl;
t.SetA(3);
cout << t.a << endl;
//3
system("pause");
}