构造函数可以在c ++中成为朋友吗?

Shr*_*yas 24 c++

我们可以声明一个类的构造函数是朋友吗?我认为不可能.但我读到的地方可能是,但我无法做到.如果是,请提供一些示例代码.

Luc*_*ore 30

是的,它可以:

class Y
{
public:
     Y();
};
class X
{
private:
     void foo() {}  
     friend Y::Y();
};
Y::Y() 
{
   X x; x.foo(); 
}  
Run Code Online (Sandbox Code Playgroud)

按照11.3朋友[class.friend]

5)当朋友声明引用重载的名称或运算符时,只有参数类型指定的函数才成为朋友.类X的成员函数可以是类Y的朋友.

[例如:

class Y {
friend char* X::foo(int);
friend X::X(char); // constructors can be friends
friend X::~X(); // destructors can be friends
};
Run Code Online (Sandbox Code Playgroud)

- 末端的例子]

(强调我的)

  • @Shreyas没有意义,为什么一个班级(或成员)会成为自己的朋友? (3认同)
  • +1用于挖掘标准中的示例:) (2认同)