gpt4 book ai didi

c++ - C++中如何限制对象私有(private)数据成员的修改?

转载 作者:行者123 更新时间:2023-11-28 02:05:09 25 4
gpt4 key购买 nike

请检查下面的代码,我需要一个解决方案来限制修改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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com