You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何在类成员方法中可访问同类对象的private数据成员?

问题解答

先看你提供的代码:

#include <iostream>
using std::cout;

class distance {
private :
   int feet;
   int inches;
public :
   void setfeet(int x) { feet = x; }
   int getfeet(void) { return feet; }
   void setinches(int y) { inches = y; }
   int getinches(void) { return inches; }
   distance add(distance temp) {
       distance result(0, 0);
       result.feet = feet + temp.feet;
       result.inches = inches + temp.inches;
       return result;
 }
    distance(int ft, int in) : feet(ft), inches(in) {}

};

int main(void)
{
    distance a(5, 6);
    distance b(3, 4);
    distance sum(a.add(b));
    cout << sum.getfeet() <<"\n";
    cout << sum.getinches() << "\n";
    return 0;

}

为什么成员函数能访问同类型其他对象的私有成员?

C++的访问控制(public/private/protected)是基于类而非基于对象的。核心规则是:

  • 类的任意成员函数,都有权访问该类所有对象的私有成员——不管这个对象是当前函数所属的实例(比如add里的feet等价于this->feet)、函数内部创建的局部对象(result),还是作为参数传入的对象(temp)。
  • 私有权限的作用是限制类外部代码直接访问成员,而类自身的成员函数属于类的内部范畴,完全不受这个限制。

打个比方:就像同一家公司的员工,能访问公司内部的所有资源,不管是自己工位的、同事工位的还是新配置的工位——因为大家都属于同一个“类”(公司)的内部成员。

内容的提问来源于stack exchange,提问作者Mohammed Amer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:52:26