我想知道这段代码怎么会正确以及编译器如何知道首先创建类 A 的对象,我认为它不应该编译,因为 B 的构造函数请求类型 A 而不是 int
class A
{
int a1;
public:
A(int i) { cout << i << "A"<<endl;}
friend class B;
};
class B
{
public:
B(A a) {cout <<"B" <<a.a1;}
};
void main()
{
B b(7);
}
输出:7A B7
最佳答案
这与friend
无关。
因为你还没有标记A
构造函数explicit
,所以发生了从int
到A
的隐式转换.
关于c++ friend 类作为 ctor 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28392601/