我们可以声明一个类的构造函数是朋友吗?我认为不可能。但我读到的地方可能是,但我无法做到。如果是,请提供一些示例代码。
答案 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]
(强调我的)