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

标签 c++ oop private members

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

相关文章:

c++ - 将 libpng 链接到 android 原生项目

c++ - 在列表中调用子对象

oop - Ada:使用构造对象的值

C++ 私有(private)函数 - 不在此范围内错误

c++ - IE9和IE10的下载URL历史记录

c++ - Rcpp:通过引用将行附加到数据框

c++ - 数组错误指针的增量运算符?

python - python 对象的 bool 上下文

amazon-s3 - 仅当请求中存在特定 header 时才允许访问私有(private) S3 存储桶

java - 为什么克隆可以在另一个对象上设置私有(private)字段?