gpt4 book ai didi

c++ - 可以通过地址访问私有(private)变量吗?

转载 作者:可可西里 更新时间:2023-11-01 15:37:13 24 4
gpt4 key购买 nike

公共(public)函数是否可以返回指向类中私有(private)变量的指针。如果是/如果不是,会发生什么?它会崩溃还是有什么非常不安全的地方?可以读取或写入指向的数据吗?谢谢

最佳答案

是的,成员函数可以返回指向私有(private)数据成员的指针(或引用)。除了在大多数情况下它会破坏封装之外,这没有什么错误

当然可以通过返回的指针或引用来读取数据成员。它是否可以写入取决于返回的指针或引用是否指向一个 const 限定的对象(即,如果您返回一个 const T*,您将无法修改指向 T)。例如:

class Example
{
public:
int* get() { return &i; }
const int* get_const() const { return &i; }
private:
int i;
};

int main()
{
Example e;

int* p = e.get();
int a = *p; // yes, we can read the data via the pointer
*p = 42; // yes, we can modify the data via the pointer

const int* cp = e.get_const();
int b = *cp; // yes, we can read the data via the pointer
*cp = 42; // error: pointer is to a const int
}

关于c++ - 可以通过地址访问私有(private)变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3432576/

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