Объявление друга в C++ - разница между публичным и частным
Я имею в виду разницу между:
class A
{
public:
friend class B;
};
и
class A
{
private: //or nothing as the default is private
friend class B;
};
есть ли разница?
3 ответа:
нет, нет никакой разницы - вы просто говорите, что класс B является другом класса A и теперь может получить доступ к своим частным и защищенным членам, вот и все.
так как синтаксис
friend class B
не объявляет a классаA
, Так что не имеет значения, где вы его пишете, классB
это друг классаA
.также, если вы пишите
friend class B
на наA
, то это не значит, чтоB
доступ толькоprotected
иpublic
членыA
.всегда помните, что после
B
становится другомA
, он может получить доступ к любой членA
, независимо от того, в каком разделе вы пишитеfriend class B
.
объявление друга появляется в теле класса и предоставляет функцию или другой класс доступ к закрытым и защищенным членам класса, где появляется объявление друга.
как таковые спецификаторы доступа не влияют на значение объявлений друзей (они могут появляться в частных: или в публичных: разделах, без разницы).