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++中CString string char* char 之间的字符转换(多种方法)

    C++中CString string char* char 之间的字符转换(多种方法)

    在写程序的时候,我们经常遇到各种各样的类型转换,比如 char* CString string 之间的互相转换,这里简单为大家介绍一下,需要的朋友可以参考下
    2017-09-09
  • C++标准C函数在各平台编译结果都相同

    C++标准C函数在各平台编译结果都相同

    今天小编就为大家分享一篇关于C++标准C函数在各平台编译结果都相同,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 如何编译libfreetype方法详解

    如何编译libfreetype方法详解

    libfreetype是为跨平台设计的,在windows下要编译的话,可以直接打开目录进行编译,本文将详细介绍libfreetype编译
    2012-11-11
  • C++算术运算符与类型转换

    C++算术运算符与类型转换

    这篇文章主要介绍了C++算术运算符与类型转换,C++当中提供5种基础的算术运算符,分别是加法、减法、乘法、除法和取模。下main我们就一起来看看下面文章得具体举例与说明,需要的朋友可以参考一下,希望对你有所帮助
    2021-11-11
  • C++STL教程之vector模板的使用

    C++STL教程之vector模板的使用

    模板类vector是一个动态数组,类似于string类,可存放任意类型,能够末尾、中间增加数据,基本上是是new创建动态数组的替代品,vector可以自动完成new和delete
    2022-08-08
  • 基于C++执行内存memcpy效率测试的分析

    基于C++执行内存memcpy效率测试的分析

    本篇文章对C++中执行内存memcpy的效率进行了分析测试。需要的朋友参考下
    2013-05-05
  • 详解C语言printf()输出格式

    详解C语言printf()输出格式

    这篇文章主要介绍了C语言printf()输出格式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • C++利用MySQL API连接和操作数据库实例详解

    C++利用MySQL API连接和操作数据库实例详解

    这篇文章主要介绍了C++利用MySQL API连接和操作数据库实例详解的相关资料,需要的朋友可以参考下
    2017-01-01
  • 浅析在C/C++中如何写调试宏

    浅析在C/C++中如何写调试宏

    这篇文章主要为大家详细介绍了在C/C++中如何写调试宏的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下
    2024-05-05
  • C语言完数的实现示例

    C语言完数的实现示例

    C语言中的完数指的是一个正整数,本文主要介绍了C语言完数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05

最新评论