C++通过指针访问类私有成员

在 C++ 中,类的私有成员无法被外部函数直接访问,这是为了保证数据安全和封装性。然而,我们可以利用指针间接地访问和修改这些私有成员。

以下代码示例展示了如何利用指针访问类的私有成员 xy

class Test {
  int x, y;
 public:
  void Setxy(int a, int b) { 
    x = a; 
    y = b; 
  }
  void Getxy(int *px, int *py) { 
    *px = x; 
    *py = y; 
  }
  void Printxy(void) { 
    cout << "x=" << x y=" << y << endl; 
  }
};

int main() {
  Test obj;
  int a, b;

  obj.Setxy(10, 20);

  // 通过 Getxy 函数获取 x 和 y 的值
  obj.Getxy(&a, &b); 

  cout << " a=" << a << " xss=removed>

代码解析:

  1. Test 类定义了两个私有成员变量 xy,以及三个公有成员函数 SetxyGetxyPrintxy
  2. Setxy 函数用于设置 xy 的值。
  3. Getxy 函数接收两个指向整数的指针 pxpy 作为参数。在函数内部,*px*py 分别被赋值为 xy 的值。
  4. main 函数中,首先创建了一个 Test 类的对象 obj,并调用 Setxy 函数初始化其成员变量。
  5. 接着,声明了两个整型变量 ab,并将它们的地址作为参数传递给 Getxy 函数。
  6. Getxy 函数通过指针修改了 ab 的值,从而间接地访问了私有成员 xy

需要注意的是,虽然可以通过指针访问私有成员,但这并不是推荐的做法。 因为这种操作破坏了类的封装性,可能会导致程序难以维护和调试。

ppt 文件大小:8.66MB