菱形继承

菱形继承属于多继承中一种具有代表性的继承关系,产生数据冗余和数据二义性问题

class A
{
public:int a;
};class B : public A
{
public:int b;
};class C : public A
{
public :int C;
};class D : public B, public C
{
public:void func(){}
};

上述代码中对变量进行内存查看 如下图:

解决方法:虚拟继承

class A
{
public:
int _a;
};
// class B : public A
class B : virtual public A
{
public:
int _b;
};
// class C : public A
class C : virtual public A
{
public:
int _c;
};
class D : public B, public C
{
public:
int _d;
};

这里可以分析出D对象中将A放到的了对象组成的最下面,这个A同时属于B和C,那么B和C如何去找到公共的A呢?这里是通过了B和C的两个指针,指向的一张表。这两个指针叫虚基表指针,这两个表叫虚基表。虚基表中存的偏移量。通过偏移量可以找到下面的A。

面试中常被问到(26)菱形继承及解决方法相关推荐

  1. Python培训常识:Python面试中常被问到的几种设计模式要知道

    学习Python技术大家都是为了日后能够找到适合自己的工作岗位,那么除了要学习好Python技术外,对于面试环节的问题也要有所了解,本期小编为大家介绍的Python培训教程就算关于Python面试中常 ...

  2. 面试中常被问到(11)虚函数/纯虚函数

    虚函数 如何定义一个虚函数?在基类成员函数前加入virtual关键字,但并不代表此函数不被实现,只是说明允许基类指针调用派生类重写的此函数 一个类只要声明有虚函数或者从基类继承了虚函数,在编译过程中就 ...

  3. e - 数据结构实验之查找五:平方之哈希表_面试中常被问到的Hash表,你了解吗

    #新人扶持计划# Hash表在面试中经常被问到,今天我们来了解下. Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组.链表以及二叉排序树等相比较有很明显的区别,它能够 ...

  4. 面试中常被问到(五)C++析构函数,虚析构函数

    C++析构函数 (1)对于析构函数:析构函数与构造函数相呼应,从调用构造函数开始到自动执行析构函数二者调用期间即为所创建对象实例的生命周期. (2)析构函数与类名相同,仅前面加一个~,一般析构函数无参 ...

  5. 面试中常被问到的(22)TCP三次握手/四次挥手及问题

    TCP三次握手: 连接: 客户端:发送syn请求,收到服务端ack确认,连接建立 服务端:监听syn请求,收到客户端syn请求新建套接字进行ack回复,确认连接建立 状态: 客户端:SYN_SEND- ...

  6. 面试中常被问到(九)STL迭代器失效问题

    STL容器中迭代器失效的场景: 以vector为例进行分析 vector进行数据插入 如果空间充足那组,插入数据后,原有数据向后移动,导致迭代器失效 如果空间不足,插入新数据需要扩容,则发生拷贝,导致 ...

  7. Linux运维面试中常被问到的两个shell脚本

    脚本一: 在公司里有一个网段是 192.168.3.0的网段,现在想判断一下哪些主机在线,哪些主机不在线. shell脚本解决方案: 方法一: 思路 首先要循环目标主机的IP地址,IP地址分为两部分: ...

  8. 面试:整理面试中常被问到的8种数据结构

    数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作.数据结构在计算机科学和软件工程领域具有广泛而多样的用途. 几乎所有已开发的程序或软件系统都使用数据结构.此外,数据 ...

  9. 面试中常被问到的(21)TCP/UDP如何保持可靠性

    Tcp保持可靠性从以下三个方面描述: 1,可靠传输:面向连接,包序管理,确认应答,超时重传,校验和 2,避免丢包:滑动窗口流量控制,拥塞机制(慢启动快增长) 3,提高性能:确认序号快速重传,延迟应答, ...

最新文章

  1. 这么流行的ZooKeeper,原来是这样设计的!
  2. 相机夜视原理——红外补光
  3. POJ1990:MooFest——题解
  4. java线程问题小结-----常见面试问题
  5. 【江苏】2021年下半年软考报考时间及通知
  6. GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
  7. 如何在群晖服务器上启用plex远程访问,如何在Synology NAS上更新Plex | MOS86
  8. Lua语法入门HelloWorld
  9. Java编译过程、c/c++编译过程区别
  10. Algorithm I assignment Collinear
  11. c语言转换为python语言_python和c语言
  12. 百度地图 Android SDK - 个性化地图
  13. dubbo日志关闭_不可忽视的Dubbo线程池避坑指南
  14. matlab生成网络流量,BP神经网络 预测网络流量
  15. 《企业IT架构转型之道》读后感(一)
  16. Android控件之Button
  17. 论文caj转换为word
  18. 基于XPDL2.0的过程定义
  19. 元气骑士双人异地公网联机工具(仅支持双人、JAVA实现)
  20. 围棋博弈程序的实现与思考(4)——棋盘的数据结构

热门文章

  1. 物联网安全的现状简述
  2. nginx压力测试方法:
  3. 【渝粤题库】陕西师范大学151106中级财务管理 作业(高起专)
  4. 【懒人专用系列】Xind2TestCase的初步探坑
  5. 下图为双总线结构机器的数据通路_买阿尔法蛋还送699元扫地机器人?妈妈,我的双11礼物就它了!...
  6. python怎么重复输入密码直至正确_python作业/练习/实战:生成随机密码
  7. 数据罗盘是个什么玩意儿?
  8. 求助求助给win10安装智能abc结果电脑废了
  9. linux如何安装网卡驱动
  10. 线程组ThreadGroup分析详解 多线程中篇(三)