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

相关问题