Объявление друга в 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.
объявление друга появляется в теле класса и предоставляет функцию или другой класс доступ к закрытым и защищенным членам класса, где появляется объявление друга.
как таковые спецификаторы доступа не влияют на значение объявлений друзей (они могут появляться в частных: или в публичных: разделах, без разницы).