当继承关系出现菱形继承时,可能出现二义性

当类me访问基类human的公共变量成员时,系统将不知道通过哪个上一层类访问该成员变量,因为Chinese和woman都从human继承了成员变量,此二义性错误。

【实现过程】

  上述二义性现象可以通过虚继承避免,它的格式如下:

 

class A
{};
class B virtual public A
{};

本实例实现的具体代码如下:

#include<iostream>
#include<string>
using namespace std;
class human
{
public:bool getBeauty(){return m_beauty;}bool m_beauty;
};
class Chinese:virtual public human
{
};
class woman:virtual public human
{
};
class me:public Chinese,public woman
{
public:me(bool a){m_beauty=a;}
};
void main()
{me _me(true);cout<<_me.getBeauty()<<endl;
}

【代码解析】

  第04~12行是基类human的定义体,其中有成员变量m_beauty和成员函数getBeauty()。第13~18行是子类Chinese和woman,虚继承自基类human。第19~26行是类me多继承与Chinese和woman。由于虚继承,所以当类me的对象_me访问基类的成员变量时无二义性错误。

转载于:https://www.cnblogs.com/0405mxh/p/10125478.html

错误的模糊应用(类继承问题)相关推荐

  1. Python|装饰器|执行时间|递归|动态属性|静态方法和类|继承和多态|isinstance类型判断|溢出|“魔法”方法|语言基础50课:学习记录(6)-函数的高级应用、面向对象编程、进阶及应用

    文章目录 系列目录 原项目地址: 第16课:函数的高级应用 装饰器(记录执行时间的例子) 递归调用 简单的总结 第17课:面向对象编程入门 类和对象 定义类 创建和使用对象 初始化方法 打印对象 面向 ...

  2. Python 精选笔试面试习题—类继承、方法对象、包管理、闭包、可变类型作为默认参数、列表引用、sort与sorted、 append 和 extend、深拷贝和浅拷贝

    1. 类继承 如下代码 class A(object):def show(self):print 'This is calss A'class B(A):def show(self):print 'T ...

  3. C++知识点49——类继承与类的构造、拷贝、operator=和析构函数

    一.类继承与构造函数 在C++中,无论类是否有继承关系,每个类各自控制它自己的成员的初始化.子类虽然含有基类的成员,但是并不能对基类的成员直接初始化,需要使用基类的构造函数初始化子类中的基类部分. 从 ...

  4. JAVA-抽象类/类继承

    1.当一个类继承一个抽象类的时候,必须实现抽象类的方法.如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类. 2.被final修饰的类为最终类,不能被继承.而类前面如果有abstr ...

  5. C++:38---final关键字和禁止类继承

    一.final关键字 C++新标准规定:如果我们定义的类不希望被其他类继承,那么可以在类名后加一个final关键字 但是final类仍然可以继承其他类. 实际上C++11的关键字final有两个用途. ...

  6. java为什么不推荐使用stack_栈和队列的面试题Java实现,Stack类继承于Vector这两个类都不推荐使用...

    在 thinking in java中看到过说Stack类继承于Vector,而这两个类都不推荐使用了,但是在做一到OJ题时,我用LinkedList来模拟栈和直接用Stack,发现在进行入栈出栈操作 ...

  7. java请编写公共类继承抽象类_(Java相关)怎么理解抽象类,继承和接口?

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:海子 来源:博客园 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没有具体的 ...

  8. C++ Primer Plus学习(十二)——类继承(is-a)

    类继承(is-a) 基类和派生类 多态公有继承 静态联编和动态联编 虚函数 访问控制:protected 抽象基类 继承和动态内存分配 总结 基类和派生类 派生类构造函数 创建派生类对象时,程序首先调 ...

  9. scala面向对象基础---类继承和特质

    一.类继承 传送门:Scala基础-类继承 Scala的类继承 调用超类的构造方法 重写超类的成员 3.1.不被继承的成员 3.2.不可重写的成员 3.3.无参方法与字段 子类型多态与动态绑定 抽象类 ...

  10. python中的序列类型数据结构元素的切片操作_PythonI/O进阶学习笔记_4.自定义序列类(序列基类继承关系/可切片对象/推导式)...

    前言: 本文代码基于python3 Content: 1.python中的序列类分类 2. python序列中abc基类继承关系 3. 由list的extend等方法来看序列类的一些特定方法 4. l ...

最新文章

  1. Golang+Python 实现安全动态开机密码+服务器存储
  2. jQuery UI - Accordion 手风琴组件的使用
  3. Ajax跨域请求与解决方案
  4. 从四个问题透析Linux下C++编译链接
  5. sass之mixin的全局引入(vue3.0)
  6. 吴恩达深度学习5.2笔记_Sequence Models_自然语言处理与词嵌入
  7. 电子政务方向:We7.Cloud政府云门户
  8. Andorid视觉新冲击-Material design语言
  9. 嵌入Windows User Control到ASP.NET web form
  10. Leetcode 刷题笔记(二十五) ——动态规划篇之背包问题:完全背包
  11. STM32F429+W25Q256+TouchFGX
  12. Python竟然可以玩转微信emoji
  13. 2021版itunes不备份更新ios系统
  14. python怎么筛选excel数据_python 利用pandas处理excel数据(获取特定值,排序,筛选)...
  15. 【用html做个人简历的网页(初级)】
  16. 计算机视觉将打造中国技术的“胜利者效应”
  17. ireport 实现动态合并单元格
  18. 深度完美 XP SP3 完美优化DVD装机版 V2013
  19. 80%菜鸟保税仓可实现送货上门 实现进口全链路、多场景、端到端物流解决方案...
  20. Ant design-05 表单多选的组件

热门文章

  1. 3DMAX安装包及近百GB素材资源,以及3D游戏建模教程
  2. centos 6.4/6.5下源码编译安装mysql_CentOS 6.4/6.5下源码编译安装mysql
  3. C++ Primer 第五版 第6章 6.1——函数及函数定义及调用习题答案
  4. linux文件类型缩写,常见Linux系统目录、文件类型、ls命令、alias命令
  5. 分布式链路追踪技术对比
  6. linux命令zip打包,linux下zip命令打包与解包
  7. php 三色排序,一个数组中只有0,1,2三种元素,要求对这样的数组进行排序,一个数组中只有0,1,2三种元素,要求对这样的数组进行排序,第2章 排序 | | 第17节 三色排序练习题...
  8. 渗透测试入门3之隐匿攻击
  9. java中calendarr_Java端获取当前时间的前12个小时
  10. Tomcate服务器的基本知识概括总结及安装目录概括