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


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

class A
{
 public: 
      friend class B;
 };

и

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

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

3 115

3 ответа:

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

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

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

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

объявление друга появляется в теле класса и предоставляет функцию или другой класс доступ к закрытым и защищенным членам класса, где появляется объявление друга.

как таковые спецификаторы доступа не влияют на значение объявлений друзей (они могут появляться в частных: или в публичных: разделах, без разницы).