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

C++类成员方法中能否访问同类其他对象的private私有成员?

#include <string>
#include <iostream>
#include <vector>

using namespace std;

class Test {
public:
    int testing() {
        Test t;
        return t.x;
    }
private:
    int x = 0;

};

int main() {
    Test a;
    cout << a.testing() << endl;
}
原因解释
  • C的访问控制是类级别而非对象级别,这是C标准明确定义的规则。只要处于同一个类的作用域范围内,不管访问的是当前this指向的对象成员,还是同类型其他实例的成员,都可以直接访问私有、保护成员,不受访问权限限制。
  • 这个规则的设计逻辑非常合理:类的成员函数本身就是负责实现类的内部逻辑,很多常见场景都需要操作同类型其他实例的内部状态,比如拷贝构造函数、移动构造函数、赋值运算符重载、比较运算符重载等场景,如果按对象级别限制访问权限,这些功能根本无法正常实现,反而需要额外给所有私有成员加公有的读写接口,反而破坏了类的封装性。

举个最常见的使用场景示例:

// Test类的拷贝构造函数
Test::Test(const Test& other) {
    // 直接访问传入的other实例的私有成员x是合法的,和你示例中的逻辑完全一致
    x = other.x;
}

你给出的示例代码完全符合C++语法规则,编译运行后会正常输出0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:06:06