Friend declaration w C++ - różnica między publicznym a prywatnym
Ktoś mi powiedział, że jest różnica między ogłoszeniem klasy przyjaciół w publicznych lub prywatnych obszarach klasy, ale nie mogę znaleźć nic na ten temat w Internecie, i nie jestem pewien, czy wiedzieli, o czym mówią.
Mam na myśli różnicę między:
class A
{
public:
friend class B;
};
I
class A
{
private: //or nothing as the default is private
friend class B;
};
Jest jakaś różnica? 3 answers
Nie, Nie ma różnicy - po prostu powiedz, że Klasa B jest przyjacielem klasy A i teraz może uzyskać dostęp do swoich prywatnych i chronionych członków, to wszystko.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-20 06:48:06
Ponieważ składnia friend class B
nie deklaruje członka klasy A
, więc nie ma znaczenia, gdzie go napiszesz, class B
jest przyjacielem klasy A
.
Ponadto, jeśli napiszesz friend class B
w protected
sekcji A
, to nie oznacza to, że B
ma dostęp tylko do protected
i public
członków A
.
Zawsze pamiętaj, że gdy B
zostanie przyjacielem A
, może uzyskać dostęp do każdego członka A
, bez względu na to, w której sekcji napiszesz friend class B
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-20 06:52:34
Deklaracja znajomego pojawia się w ciele klasy i przyznaje funkcję lub inną klasę dostęp do prywatnych i chronionych członków klasy, w której pojawia się deklaracja przyjaciela.
Jako takie specyfiki dostępu nie mają wpływu na znaczenie deklaracji znajomych (mogą występować w sekcjach private: lub public:, bez różnicy).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-29 17:20:48