Доступ к закрытым элементам объекта того же класса

Это законно? Если нет, то разрешит ли это следующий код?

class Foo
{
    friend class Foo;
}

4 ответа

Решение

Это избыточно. Foo уже имеет доступ ко всем членам Foo. Два объекта Foo могут получить доступ к членам друг друга.

class Foo {
public:
  int touchOtherParts(const Foo &foo) {return foo.privateparts;}
private:
  int privateparts;
};

Foo a,b;
b.touchOtherParts(a);

Приведенный выше код будет работать просто отлично. B будет иметь доступ к личным данным члена.

Да, это законно для объекта класса Foo чтобы получить доступ к закрытым членам другого объекта класса Foo, Это часто необходимо для таких вещей, как создание и назначение копий, и не требуется никакого специального объявления друга.

Это излишне и ненужно. Более того, я получаю следующее предупреждение в g++

warning: class ‘Foo’ is implicitly friends with itself

Классы фридинга сами по себе имеют смысл, если они являются шаблонами, поскольку каждый экземпляр с различными параметрами - это отдельный класс.

Другие вопросы по тегам