相关疑难解决方法(0)

为什么同一类的对象可以访问彼此的私有数据?

为什么同一类的对象可以访问彼此的私有数据?

class TrivialClass {
public: 
  TrivialClass(const std::string& data) :
    mData(data) {};

  const std::string& getData(const TrivialClass& rhs) const {
    return rhs.mData;
  };

private:
  std::string mData;
};

int main() {
  TrivialClass a("fish");
  TrivialClass b("heads");

  std::cout << "b via a = " << a.getData(b) << std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个代码有效.对象a完全可以从对象b访问私有数据并将其返回.为什么会这样?我认为私人数据是私人的.(我开始试图理解pimpl习语中的复制构造函数,但后来我发现我甚至不理解这种简单的情况.)

c++ private-members

91
推荐指数
6
解决办法
3万
查看次数

标签 统计

c++ ×1

private-members ×1