2016-12-29 157 views
1
#include <iostream> 
using namespace std; 

struct A { 
    A() { cout << "A "; } 
}; 

struct B: A { 
    B() { cout << "B "; } 
}; 

struct C: A { 
    C() { cout << "C "; } 
}; 

struct D: C, B { 
    D() { cout << "D "; }  
}; 

int main(){ 
    D d; 
} 

結果是ACAB D. 我的理解是d選自C和B繼承,並且如果在d中創建對象「d」,那麼它也具有從C和B.而且,由於B與屬性C既從A繼承,D也應從A繼承。有人可以解釋結果嗎?我的預測是遙遠......有人可以解釋這個繼承代碼嗎?

+1

嗨。歡迎來到SO。您應該爲編程語言添加一個標籤,以便爲那些使用該語言的專家顯示問題。 :) – Simba

+0

嗨!謝謝你的提示!我還是新來的SO ^^ – codenoob

+0

@codenoob歡迎堆棧溢出。請花些時間閱讀[The Tour](http://stackoverflow.com/tour),並參閱[幫助中心](http://stackoverflow.com/help/asking)中的資料,瞭解您可以在這裏問。 –

回答

0

繼承中所反映的是有關係的。

AD對象是C和B. AC又一個A.因此,以創建d的一個實例中,運行時必須首先創建一個A,然後C.這解釋的前兩個字符輸出。繼續這個推理,你會得到其餘的。

+0

感謝您的解釋! – codenoob

相關問題