虚继承基类构造顺序

来源:互联网 发布:开源cms 编辑:程序博客网 时间:2024/05/16 12:55


#include<iostream>using namespace std;class A{public:A(char *s){cout << s << endl;}~A(){}};class B :virtual public A{public:B(char *s1, char*s2) :A(s1){cout << s2 << endl;}};class C :virtual public A{public:C(char *s1, char*s2) :A(s1){cout << s2 << endl;}};class D :public B, public C{public:D(char *s1, char *s2, char *s3, char *s4) :B(s1, s2), C(s1, s3), A(s2 )//初始化成员列表的顺序不是真的构造顺序{                                                                      //其构造顺序与基类被继承的顺序相关cout << s4 << endl;}};int main() {D *p = new D("class A", "class B", "class C", "class D");delete p;return 0;}//输出:BBCD


0 0
原创粉丝点击