在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"); }