c++ 虚继承的实现示例
测试菱形继承问题:
void testXuJicheng() { // 反面教材。一个基php类被中间俩个派生类继承,最终的子类同时继承这俩个中间派生类,形成的类继承关系图像是菱形结构。 // 菱形继承导致二义性与数据冗余问题。 class Biology { publicjs: string name; }; class Bird : public Biology {}; class Man: public Biology {}; // 假设有一种生物BirdMan同时继承Bird和Man class BirdMan : public Bird, public Man {}; BirdMan b; b.name = "birdMain"; }
可以看到编译错误:BirdMan::name不明确。
原因是,成员变量name从俩个父类中继承到,这里不知道是指的哪个编程。
代码修改为:
void testXuJicheng() { class BivMlEpoology { public: string name; }; class Bird : virtual public Biology {}; // 虚继承 class Man: virtual public Biology {}; // 虚继承 // 假设有一种生物BirdMan同时继承Bird和Man class BirdMan : public Bird, public Man {}; BirdMan b; b.name = "安德森"; cout << vMlEpo"a BirdMan, name: " << b.name << endl; }
打印:
到此这篇关于c++ 虚继承的实现示例的文章就介绍到这了,更多相关c++ 虚继承内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论