相关疑难解决方法(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万
查看次数

访问同一类中另一个对象的私有字段

class Person 
{
   private BankAccount account;

   Person(BankAccount account)
   {
      this.account = account;
   }

   public Person someMethod(Person person)
   {
     //Why accessing private field is possible?

     BankAccount a = person.account;
   }
}
Run Code Online (Sandbox Code Playgroud)

请忘记设计.我知道OOP指定私有对象是该类的私有对象.我的问题是,为什么OOP设计为私有字段具有类级访问而不是对象级访问

.net c++ java oop

76
推荐指数
4
解决办法
3万
查看次数

标签 统计

c++ ×2

.net ×1

java ×1

oop ×1

private-members ×1