Ответ 1
Нет, нет никакой разницы - вы просто говорите, что класс B является другом класса A и теперь может получить доступ к своим частным и защищенным членам, что все.
Кто-то сказал мне, что существует разница между объявлением класса друга в публичных или частных областях класса, но я не могу найти ничего об этом в Интернете, и я не уверен, что они знали, что они говоря о.
Я имею в виду разницу между:
class A
{
public:
friend class B;
};
и
class A
{
private: //or nothing as the default is private
friend class B;
};
Есть ли разница?
Нет, нет никакой разницы - вы просто говорите, что класс B является другом класса A и теперь может получить доступ к своим частным и защищенным членам, что все.
Поскольку синтаксис friend class B
не объявляет член класса A
, поэтому не имеет значения, где вы его пишете, class B
является другом класса A
.
Кроме того, если вы пишете friend class B
в protected
разделе A
, это НЕ означает, что B
может получить доступ только к protected
и public
членам A
.
Всегда помните, что однажды B
станет другом A
, он может получить доступ к любому члену A
, независимо от того, в каком разделе вы пишете friend class B
.