首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2013-03-01 
多继承中虚基类构造函数的一种调用规则规则:如果父类中有虚基类(A),且有一个直接基类(B)是虚基类的子类,那

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

规则:如果父类中有虚基类(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)

热点排行