B C虚继承A,D public继承 B C ,有A *a = new D,a->fun(),fun是虚函数,并且B C都重写了,怎么保证a调用的是B重写的虚函数。

#include <iostream>
using namespace std;class A
{
public:virtual void fun() { cout << "A::fun()." << endl; }
};class B :public virtual A
{
public:void fun() { cout << "B::fun()." << endl; }
};class C :public virtual A
{
public:void fun() { cout << "C::fun()." << endl; }
};class D :public B, public C
{
public:void fun() { cout << "D::fun()." << endl; }
};int main()
{A* a = new D;(dynamic_cast<B*>(a))->B::fun();return 0;
}
// 输出:B::fun().

【对象程序设计面向】虚继承相关推荐

  1. 内存首地址为1000h_C++虚继承,菱形继承,内存分布

    前言 在叙述C++虚继承之前,我先给大家抛出一个问题.例如现在有4个类,分别是class A, class B, class C, class D.它们的关系如下图. 如上如所示,class B和cl ...

  2. Th3.15:继承的构造函数、多重继承、虚继承之详述

     本博客将记录:新经典课程知识点的第15节的笔记! 本小节的知识点分别是继承的构造函数.多重继承.虚继承. 今天总结的知识分为以下5个点: (1)继承的构造函数 (2)多重继承     (2.1)多重 ...

  3. C++ 面向对象(一)继承:继承、对象切割、菱形继承、虚继承、继承与组合

    目录 继承 继承的概念 继承方式 基类与派生类的赋值转换 作用域与隐藏 派生类的默认成员函数 友元与静态成员 友元 静态成员 多继承 菱形继承 虚继承 继承和组合 什么是组合 如何选择组合和继承 继承 ...

  4. C++>继承,继承方式及其比较,子类和父类对象指针,派生类的默认成员函数,虚继承,继承与友元,继承与静态成员

    继承 继承的概念与定义 概念: 继承是指一个子类(或称为派生类)继承父类(或称为基类)的特征(属性和操作).继承是面向对象程序设计时实现代码复用的重要手段,它允许在原有的类的基础上进行扩展,增加功能, ...

  5. C++ 继承 | 对象切割、菱形继承、虚继承、对象组合

    文章目录 继承 继承的概念 继承方式及权限 using改变成员的访问权限 基类与派生类的赋值转换 回避虚函数机制 派生类的默认成员函数 友元与静态成员 多继承 菱形继承 虚继承 组合 继承 继承的概念 ...

  6. C++基础14-类和对象之多继承与虚继承

    多继承:一个类有多个直接基类的继承关系称为多继承 总结: 1.一般将具有菱形样式继承方式的某些类声明为虚继承 3.虚继承的主要目的是为了防止二义性 2.虚继承就是在继承方式前加virtual 如果一个 ...

  7. C++中类,对象,封装,继承(派生),多态

    文章目录 1.类 2.对象 3.封装 4.继承(派生) 5.多态 1.类 类就是同一类事物的总称,比如我(一个对象)可以讲话,那么基本上所有人都具备这个属性,就将我这一类的对象称为类,类的思想就是这样 ...

  8. C++对象模型:单继承,多继承,虚继承

    什么是对象模型 有两个概念可以解释C++对象模型: 语言中直接支持面向对象程序设计的部分. 对于各种支持的底层实现机制. 类中成员分类 数据成员分为静态和非静态,成员函数有静态非静态以及虚函数 cla ...

  9. 虚继承是什么意思_huaxiazhihuo

    此文只是杂乱的记录一点点对于面向对象的个人看法,有些观点也并非原创.没什么系统性可言,虽然笔者稍作整理,但始终还是显得很散乱,只是一些片段的堆积. 由于涉及的题目过于庞大,反而不知道如何下笔.先罗列一 ...

最新文章

  1. 【OpenCV3】将图像指定区域使用另一图像(或ROI)覆盖
  2. c++ 结构体初始化_STM32入门系列-使用库函数点亮LED,LED初始化函数
  3. hashmap java 便利_java遍历HashMap的高效方法
  4. 实现多线程爬取数据并保存到mongodb
  5. 2012-01-17-04
  6. TensorFlow 教程 --新手入门--1.2 下载安装
  7. G-SYNC技术是什么
  8. aspen plus大小_[软件]Aspen Plus 这些常识,你都懂了吗?
  9. 将职业教育职业化 - 各IT培训中心必须完成的使命
  10. windowsXP的所有应用命令
  11. JavaScript实现按字典排序进行md5加密, 以及个人在小程序也可以实现
  12. 史上最便捷搭建RocketMQ服务器的方法
  13. 【C++】内存4区---代码区、全局区、栈区、堆区
  14. 基于mx27ads 的yaffs 文件系统释疑
  15. 华为社招技术二面,总结复盘
  16. 性价比高的/便宜又好用的SSL证书品牌有哪些?
  17. PLSQL developer中断执行的前提
  18. 浏览器无法显示网页解决方法
  19. 360视频:金字塔棱台投影TSP
  20. JAVA的简单数据类型和复合数据类型

热门文章

  1. 即时聊天IM之二 openfire 整合现有系统用户
  2. 四川汶川地震祈福赈灾宣传画、报纸头版精选第二版(超多图)
  3. 结构专业规范大全_1.2万篇 建筑行业规范大全套!速来!
  4. python 定义函数为什么有个长线_关于格式化:如何在Python中打破这条长线?
  5. centos 重启网卡_CentOS6 网络管理之网卡配置及简单路由设置
  6. react打包后图片丢失_手搭一个 React,Typescript,Koa,GraphQL 环境
  7. mac懒人版_这些实用的Mac软件你迟早会用到,建议收藏!
  8. html dom概念,js学习之HTML DOM的一些基础概念
  9. td 双击 编辑 php,双击表格td进行编辑
  10. 看雪 2016CrackMe 攻防大赛 - 1-Crack_Me-凉飕飕