欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > c++ 虚继承

c++ 虚继承

2025/6/23 11:22:10 来源:https://blog.csdn.net/u012116089/article/details/148814960  浏览:    关键词:c++ 虚继承

测试菱形继承问题:

void testXuJicheng() {// 反面教材。一个基类被中间俩个派生类继承,最终的子类同时继承这俩个中间派生类,形成的类继承关系图像是菱形结构。// 菱形继承导致二义性与数据冗余问题。class Biology {public:string name;};class Bird : public Biology {};class Man: public Biology {};// 假设有一种生物BirdMan同时继承Bird和Manclass BirdMan : public Bird, public Man {}; BirdMan b;b.name = "birdMain";
}

可以看到编译错误:BirdMan::name不明确。

原因是,成员变量name从俩个父类中继承到,这里不知道是指的哪个。

代码修改为:

void testXuJicheng() {class Biology {public:string name;};class Bird : virtual public Biology {}; // 虚继承class Man: virtual public Biology {}; // 虚继承// 假设有一种生物BirdMan同时继承Bird和Manclass BirdMan : public Bird, public Man {}; BirdMan b;b.name = "安德森";cout << "a BirdMan, name: " << b.name << endl;
}

打印:

ok. 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词