[英]c++ friend class as argument for ctor
我想知道這段代碼是如何正確的,以及編譯器如何知道如何首先創建類A的obj,我認為它不應該編譯,因為B的ctor請求類型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
的隱式轉換。
編譯器足夠聰明,可以認為有一個int ....需要和A-等待,這里是構造函數。 用那個
據我所知,編譯器會隱式調用構造函數A(因為A(int)),因此您的代碼等效於:
B b(A(7));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.