请检查下面的代码,我需要一个解决方案来限制修改A类的私有(private)数据成员。请提出建议。
class A{
private:
int a;
int b;
public:
A(int i=0, int j=0):a(i),b(j){
cout<<"A's constructor runs"<<endl;
}
void showVal(){
cout<<"a: "<<a<<" b: "<<b<<endl;
}
};
int main(){
A ob1(10,20);
ob1.showVal();
int *ptr = (int*)&ob1;
*(ptr+0)=1;
*(ptr+1)=2;
ob1.showVal();
return 0;
}
最佳答案
您无法采取任何措施来防止有人像那样“扭曲”指针。您无法阻止您的私有(private)
数据被故意或恶意修改,只能被您类(class)的用户意外修改。
当然,除非你设法将数据存储到只读内存中......你可以从操作系统获取一些内存,将数据放入其中,然后让操作系统将内存标记为只读 - 并且然后才“发布”指向您的数据的指针。当然,你也不能修改你的数据...
关于c++ - C++中如何限制对象私有(private)数据成员的修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37810421/