Подтвердить что ты не робот

Объявление друга на С++ - разница между публичными и частными

Кто-то сказал мне, что существует разница между объявлением класса друга в публичных или частных областях класса, но я не могу найти ничего об этом в Интернете, и я не уверен, что они знали, что они говоря о.

Я имею в виду разницу между:

class A
{
 public: 
      friend class B;
 };

и

class A
{
 private: //or nothing as the default is private
      friend class B;
 };

Есть ли разница?

4b9b3361

Ответ 1

Нет, нет никакой разницы - вы просто говорите, что класс B является другом класса A и теперь может получить доступ к своим частным и защищенным членам, что все.

Ответ 2

Поскольку синтаксис friend class B не объявляет член класса A, поэтому не имеет значения, где вы его пишете, class B является другом класса A.

Кроме того, если вы пишете friend class B в protected разделе A, это НЕ означает, что B может получить доступ только к protected и public членам A.

Всегда помните, что однажды B станет другом A, он может получить доступ к любому члену A, независимо от того, в каком разделе вы пишете friend class B.