// ============================================================================ // p1c04_07_13 — 4.7.6.3 虚继承实现原理 // 来源:川大 C++/LinuxC wiki「02.Qt方向」 // 说明:本文件由 gen_part1.py 合并页面中的教学片段而成。每个片段用 // // --- 原文片段 [pageId:blockIdx] --- 标注出处。 // 已做最小修正(笔误/平台移植),详见 docs/ERRATA.md。 // ============================================================================ #include using namespace std; // --- 原文片段 [58954461:12] 4.7.6.3 虚继承实现原理 --- class BigBase{ public: BigBase(int x){mParam = x;} void func(){cout << "BigBase::func" << endl;} public: int mParam; }; class Base1 : virtual public BigBase{ public: Base1() :BigBase(10){} //不调用BigBase构造 }; class Base2 : virtual public BigBase{ public: Base2() :BigBase(10){} //不调用BigBase构造 }; class Derived : public Base1, public Base2{ public: Derived() :BigBase(10){} //调用BigBase构造 }; //每一次继承子类中都必须书写初始化语句 int main(){ Derived derived; return EXIT_SUCCESS; } // --- main ---