Это не совсем правильное объяснение вопроса.

у объекты одного класса имеют доступ к личным данным друг друга?

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;
}

Этот код работает. Для объекта a вполне возможно получить доступ к частным данным из объекта b и вернуть их. Почему это должно быть так? Я думаю, что частные данные являются частными. (Сначала я попытался понять конструкторы копирования в идиоме pimpl, но потом обнаружил, что даже не понимаю этой простой ситуации.)

Ответы на вопрос(7)

Ваш ответ на вопрос