将朋友功能/类声明为私有还是公共之间有区别吗?我似乎无法在网上找到任何相关信息。
我的意思是区别:
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
的成员,因此无论你在哪里编写它,类B
都是类A
的朋友。
此外,如果你在friend class B
的protected
部分写A
,那么它并不意味着B
只能访问protected
和public
成员A
。
永远记住,一旦B
成为A
的朋友,它可以访问A
的任何成员,无论你在哪个部分写friend class B
。
友元声明出现在类主体中,并授予一个函数或另一个类访问友元声明出现的类的私有和受保护成员。
因为这样的访问说明符对于朋友声明的含义没有影响(它们可以出现在私有:或公开:部分,没有区别)。