gpt4 book ai didi

c++ - 我无法将堆内存和 OOP 范围联系起来

转载 作者:行者123 更新时间:2023-11-27 23:12:16 25 4
gpt4 key购买 nike

我有类叫鲍勃

class Bob 
{
int lol;

public:
int* returnpointer()
{
lol = 4;
return &lol;
}
};

int main()
{
Bob A = new Bob();
int * pointertoprivate = A.returnpointer();
*pointertoprivate = 10;
}

所以我的 main 应该声明一个 Bob 的新实例,获取一个指向它不应该访问的私有(private)变量的指针并更改它。这可能吗?我没有尝试编译它。

最佳答案

访问说明符只限制直接使用名称;它们不限制通过指针间接访问成员。所以您的代码确实允许 main 修改私有(private)成员,因为成员的名称仅与成员函数一起使用。

(或者至少它会,如果所有的语法错误都被修复的话)

无论对象是否动态分配(即是否在堆上)都是如此。在 C++ 中,您应该养成避免 new 的习惯,除非真正需要它。

关于c++ - 我无法将堆内存和 OOP 范围联系起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19501318/

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