多重继承

最后更新于:2022-04-02 02:07:24

[TOC] ## 多重继承的先后问题 当前实例是CBase的“孙子”,而“父亲”有2个,每个“父亲”都将“爷爷”复制了一份。如果不指定哪个“父亲”的“父亲”,默认将第一个继承的“父亲”的“父亲”当作“爷爷”
main.cpp ``` #include #include using namespace std; class CBase { public: string id; }; class CDerive1 : public CBase { public: void show1() { cout << "CDerive1: " << id << endl; } }; class CDerive2 : public CBase { public: void show2() { cout << "CDerive2: " << id << endl; } }; class CSon : public CDerive2, public CDerive1 { }; int main() { CSon s; s.CDerive1::id = "CDerive1"; s.CDerive2::id="CDerive2"; s.show1(); // CDerive1 s.show2(); // CDerive2 return 0; } ```

## 实例地址的调查 由于2个“父亲”因而复制出2个“爷爷”,2个“爷爷”的地址也不同 ## 虚继承 “虚继承”就是在实例中,基类不管继承多少个,只复制一份。
main.cpp ``` #include #include using namespace std; class Base { public: string id; }; class A:virtual public Base { public: void show() { cout<< id<
';