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

问题描述 投票:122回答:3

将朋友功能/类声明为私有还是公共之间有区别吗?我似乎无法在网上找到任何相关信息。

我的意思是区别:

class A
{
 public: 
      friend class B;
 };

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

有区别吗?

c++ private friend public
3个回答
125
投票

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


33
投票

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

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

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


0
投票

友元声明出现在类主体中,并授予一个函数或另一个类访问友元声明出现的类的私有和受保护成员。

因为这样的访问说明符对于朋友声明的含义没有影响(它们可以出现在私有:或公开:部分,没有区别)。

© www.soinside.com 2019 - 2024. All rights reserved.