我想知道這個代碼是如何正確的,以及編譯器如何知道如何首先創建一個類A的obj,我認爲它不應該編譯,因爲B的ctor請求類型A的參數不是詮釋C++的朋友類作爲參數爲ctor
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
將顯式添加到A(int)構造函數以防止此行爲。 – hynner 2015-02-08 09:55:47