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();
}
fun_1()const
不允许更改 const 成员函数中的成员数据。但是,当数据不是直接属于对象的成员,而是在对象内部分配存储和赋值时,const 函数无法保护它。fun_2()const
例如,虽然它是一个 const 函数,但可以更改p
指向的数据。
有没有办法保护p
指向的数据?