读书人

多承袭中虚基类构造函数的一种调用规则

发布时间: 2013-03-01 18:33:02 作者: rapoo

多继承中虚基类构造函数的一种调用规则

规则:如果父类中有虚基类(A),且有一个直接基类(B)是虚基类的子类,那么子类(C或D)若不显式调用虚基类的有参数构造函数,它的直接基类(B)即使在构造列表中调用了非默认构造函数,那么也会直接调用虚基类的默认构造函数。

#include <iostream>using namespace std;const int CONST = 1;#define CC CONSTclass A{public:    A(int){cout<<"A(int)"<<endl;}    A(){cout<<"A()"<<endl;}};class B: virtual public A{public:    B(int):A(CC){cout<<"B(int)"<<endl;}    B(){cout<<"B()"<<endl;}};class C: public B, virtual public A{public:    C(int):B(CC){}};class D: public B, virtual public A{public:    D(int):B(CC), A(CC){}};int main(){    C c(CC);    D d(CC);}


运行结果:

A()
B(int)
A(int)
B(int)

读书人网 >编程

热点推荐