簡體   English   中英

c ++朋友類作為ctor的參數

[英]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 ,因此會發生從intA的隱式轉換。

編譯器足夠聰明,可以認為有一個int ....需要和A-等待,這里是構造函數。 用那個

據我所知,編譯器會隱式調用構造函數A(因為A(int)),因此您的代碼等效於:

B b(A(7));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM