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

时间:2013-08-19 09:17:35

标签: c++

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

1 个答案:

答案 0 :(得分:30)

是的,它可以:

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

根据 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
};
  

-end example]

(强调我的)