class A
{
public:
A(){ val = 0; p = new int; *p = 0; }
//void fun_1()const{ val = 1; } not allowed
void fun_2()const{ *p = 1; }
void display()const{ cout<< val <<' '<< *p <<endl; }
private:
int val;
int * p;
};
int main()
{
const A a;
a.fun_2();
}
const メンバー関数のようなメンバー データの変更fun_1()const
は許可されていません。ただし、データがオブジェクトの直接のメンバーではなく、ストレージが割り当てられ、オブジェクト内で割り当てられている場合、const 関数はそれを保護できません。たとえば const 関数ですが、指すfun_2()const
データを変更できます。p
p
を指すデータを保護する方法はありますか?