c++ 虚继承的实现示例
更新时间:2025年06月23日 09:14:31 作者:zh_xuan
本文主要介绍了c++ 虚继承的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
测试菱形继承问题:
void testXuJicheng() {
// 反面教材。一个基类被中间俩个派生类继承,最终的子类同时继承这俩个中间派生类,形成的类继承关系图像是菱形结构。
// 菱形继承导致二义性与数据冗余问题。
class Biology {
public:
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 Biology {
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 << "a BirdMan, name: " << b.name << endl;
}打印:

到此这篇关于c++ 虚继承的实现示例的文章就介绍到这了,更多相关c++ 虚继承内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
C++ private、protected、public从入门到精通实例解析
本文介绍了C++中的访问控制关键字public、protected和private,包括它们的定义、规则和应用场景,同时,还探讨了继承中的访问控制以及友元的概念和使用,文章还提供了面试高频考点的标准答案,并总结了开发中最佳实践,感兴趣的朋友跟随小编一起看看吧2026-01-01


最新评论