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
protected
和public
成员。
永远记住,一旦B
成为A
的朋友,就可以访问A
任何一个成员,而不pipe你在哪个部分写friend class B