2016-12-29 1 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

안녕하세요. 에 오신 것을 환영합니다. 해당 언어의 전문가 인 사용자에게 질문이 표시되도록 프로그래밍 언어 용 태그를 추가해야합니다. :) – Simba

+0

안녕하세요! 팁 고마워! 나는 여전히 SO ^^에 익숙하다. – codenoob

+0

@codenoob Welcome to Stack Overflow. [The Tour] (http://stackoverflow.com/tour)를 읽으신 후 [Help Center] (http://stackoverflow.com/help/asking)의 자료를 참조하십시오. 여기에 물어보십시오. –

답변

0

상속은이 관계 반영한다.

AD 개체는 C와 B입니다. AC는 차례로 A입니다. 따라서 D의 인스턴스를 만들려면 런타임에서 먼저 A를 만든 다음 C를 만들어야합니다. 산출. 이 추론을 계속하면 나머지는 얻을 수 있습니다.

+0

설명 주셔서 감사합니다! – codenoob

관련 문제