C ++中的朋友声明 – 公共和私人之间的区别

有人告诉我,在class级的公共或私人领域宣布一个朋友class是有区别的,但我似乎无法find关于这个在线的任何东西,我不知道他们知道他们在说什么。

我的意思是区别:

class A { public: friend class B; }; 

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

有区别吗?

不,没有区别 – 你只是告诉Bclass是Aclass的朋友,现在可以访问其私人和受保护的成员,就这些。

由于语法上的friend class B没有声明类A成员 ,因此,在哪里写它并不重要,类B是类A的朋友。

另外,如果你在A protected部分写下friend class B ,那么这并不意味着B只能访问A protectedpublic成员。

永远记住,一旦B成为A的朋友,就可以访问A 任何一个成员,而不pipe你在哪个部分写friend class B