我无法在堆内存和 OOP 作用域之间建立联系

I can't relate between heap memory and OOP scopes

本文关键字:作用域 OOP 之间 建立 联系 内存      更新时间:2023-10-16

>我有一个名为Bob 的类

class Bob 
{
   int lol;
 public:
   int* returnpointer()
   {
     lol = 4;
     return &lol;
   }
};
int main()
{
  Bob A = new Bob();
  int * pointertoprivate = A.returnpointer();
  *pointertoprivate = 10;
}

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

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

(或者至少会,如果所有语法错误都已修复)

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