构造函数在c++中可以是朋友吗

Can a constructor function be a friend in c++?

本文关键字:朋友 c++ 构造函数      更新时间:2023-10-16

我们可以将类的构造函数声明为友元吗?我认为它不可能。但我在某个地方读到它可以是,但我做不到。如果是的话,你能提供一些示例代码吗。

可以:

class Y
{
public:
     Y();
};
class X
{
private:
     void foo() {}  
     friend Y::Y();
};
Y::Y() 
{
   X x; x.foo(); 
}  

根据11.3好友[class.friend]

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

[示例:

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

--结束示例]

(强调矿)