C++菱形继承

来源:互联网 发布:多媒体课件制作软件 编辑:程序博客网 时间:2024/06/15 22:07

菱形继承:两个子类同时继承一个父类,而又有子类同时继承这两个子类微笑

#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>using namespace std;class A{public:    int _a;};class B: public A{public:    int _b;};class C: public A{public:    int _c;};class D:public B,public C{public:    int _d;};int main(){    D dd;    dd.B::_a = 1;    dd.B::_b = 2;    dd.C::_a = 3;    dd.C::_c = 4;    dd._d = 5;    cout << sizeof(dd) << endl;    system("pause");    return 0;}

5个int型

虚继承解决菱形继承二义性和冗余

#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>using namespace std;class A{public:    int _a;};class B: virtual public A{public:    int _b;};class C: virtual public A{public:    int _c;};class D:public B,public C{public:    int _d;};int main(){    D dd;    dd.B::_a = 1;    dd.B::_b = 2;    dd.C::_a = 3;    dd.C::_c = 4;    dd._d = 5;    cout << sizeof(dd) << endl;    system("pause");    return 0;}

6个int型


0 0
原创粉丝点击