// ============================================================================ // p1c04_07_10 — 4.7.6.2 菱形继承和虚继承 // 来源:川大 C++/LinuxC wiki「02.Qt方向」 // 说明:本文件由 gen_part1.py 合并页面中的教学片段而成。每个片段用 // // --- 原文片段 [pageId:blockIdx] --- 标注出处。 // 已做最小修正(笔误/平台移植),详见 docs/ERRATA.md。 // ============================================================================ #include using namespace std; // --- 原文片段 [58954461:9] 4.7.6.2 菱形继承和虚继承 --- class BigBase{ public: BigBase(){ mParam = 0; } void func(){ cout << "BigBase::func" << endl; } public: int mParam; }; class Base1 : public BigBase{}; class Base2 : public BigBase{}; class Derived : public Base1, public Base2{}; int main(){ Derived derived; //1. 对"func"的访问不明确 //derived.func(); //cout << derived.mParam << endl; cout << "derived.Base1::mParam:" << derived.Base1::mParam << endl; cout << "derived.Base2::mParam:" << derived.Base2::mParam << endl; //2. 重复继承 cout << "Derived size:" << sizeof(Derived) << endl; //8 return EXIT_SUCCESS; } // --- main ---