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

BIU*_*BIU 131 c++ private public friend

有人告诉我,在班级的公共或私人领域宣布朋友课程之间存在差异,但我似乎无法在网上找到任何关于此问题的内容,而且我不确定他们是否知道他们在谈论什么.

我的意思是区别:

class A
{
 public: 
      friend class B;
 };
Run Code Online (Sandbox Code Playgroud)

class A
{
 private: //or nothing as the default is private
      friend class B;
 };
Run Code Online (Sandbox Code Playgroud)

有区别吗?

sha*_*oth 128

不,没有区别 - 你只是说B级是A级的朋友,现在可以访问其私人和受保护的成员,就是这样.

  • 所以我想谁告诉我,只是不知道他们在说什么.谢谢 :) (4认同)

Naw*_*waz 33

由于语法friend class B没有声明类的成员A,因此无论你在哪里编写它,class B都是类的朋友A.

此外,如果你写friend class Bprotected部分A,那并不意味着B只能访问protectedpublic成员A.

永远记住,一旦B成为朋友A,它就可以访问任何成员A,无论你写的是哪个部分friend class B.

  • 所以我想谁告诉我,只是不知道他们在说什么.谢谢 :) (3认同)