寫在前面
在C++中的常量函數中我們知道,常量函數會禁止寫入和修改外部數據,舉個例子:
class CC{
int me;
public:
int readme const { return me; }// 常量成員函數
//void writeme(int i) const { me = i; }// 不能修改其他數據
};
原理
系統實現這一常量型函數成員禁止寫入和修改對象內容的功能是通過把常量型函數成員中隱含的this指針說明爲
const CC *const this
來實現的,其中後面的const指出this的內容不變(總是指向該對象),前面的const則指出*this不可改變(詳見const與指針)
因此,如果要對對象內容進行修改時,我們可以通過強制轉換來實現,即將
void writeme(int i) const { me = i; }
改成下面的樣子即可:
void writeme(int i) const { ((CC*)this)->me = i; }