【对象程序设计面向】虚继承

 

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().

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BTree和B+Tree详解

B 树是为了磁盘或其它存储设备而设计的一种多叉&#xff08;下面你会看到&#xff0c;相对于二叉&#xff0c;B树每个内结点有多个分支&#xff0c;即多叉&#xff09;平衡查找树。 B 树又叫平衡多路查找树。一棵m阶的B 树 (m叉树)的特性如下&#xff1a; 树中每个结点最多含…

【1】MySQL的四种事务隔离级别

二、事务的并发问题 1、脏读&#xff1a;事务A读取了事务B更新的数据&#xff0c;然后B回滚操作&#xff0c;那么A读取到的数据是脏数据 2、不可重复读&#xff1a;事务 A 多次读取同一数据&#xff0c;事务 B 在事务A多次读取的过程中&#xff0c;对数据作了更新并提交&#x…

MySQL的四种事务隔离级别

1. MySQL的四种事务隔离级别

__thread

__thread是GCC内置的线程局部存储设施&#xff0c;存取效率可以和全局变量相比。__thread变量每一个线程有一份独立实体&#xff0c;各个线程的值互不干扰。可以用来修饰那些带有全局性且值可能变&#xff0c;但是又不值得用全局变量保护的变量。 __thread使用规则&#xff1a…

eventfd(三)

1. 测试代码&#xff1a; //https://www.jianshu.com/p/d7ebac8dc9f8 #include <stdio.h> #include <unistd.h> #include <stdint.h> #include <pthread.h> #include <sys/eventfd.h> #include <sys/epoll.h>int event_fd -1;void *rea…

04-树4 是否同一棵二叉搜索树 (25 分)

给定一个插入序列就可以唯一确定一棵二叉搜索树。然而&#xff0c;一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树&#xff0c;都得到一样的结果。于是对于输入的各种插入序列&#xff0c;你需要判断它们…

strtol,strtoll,strtoul, strtoull函数的使用

#include<stdlib.h> // 这个是C标准库&#xff0c;与linux无关。这套函数是通用 long int strtol(const char *nptr, char **endptr, int base); long long int strtoll(const char *nptr, char **endptr, int base); unsigned long int strtoul(const char *nptr, char …

eventfd(一)

函数原型&#xff1a; 创建的时候可以传入一个计数器的初始值initval。 第二个参数flags在linux 2.6.26之前的版本是没有使用的&#xff0c;必须初始化为0&#xff0c;在2.6.27之后的版本flag才被使用。 #include <sys/eventfd.h> int eventfd(unsigned int initval, in…

gettimeofday

作用&#xff1a;需要打印代码执行到某处的时间&#xff0c;或者需要计算程序执行的时间差&#xff08;精确到微妙级&#xff09;。这时会用到gettimeofday函数&#xff0c;它可以返回自1970-01-01 00:00:00到现在经历的秒数。 #include <sys/time.h> int gettimeofday(…

02-线性结构2 一元多项式的乘法与加法运算 (20 分

设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行&#xff0c;每行分别先给出多项式非零项的个数&#xff0c;再以指数递降方式输入一个多项式非零项系数和指数&#xff08;绝对值均为不超过1000的整数&#xff09;。数字间以空格分隔。 输出格式: 输出分2行&…

1066 图像过滤 (15 分)

图像过滤是把图像中不重要的像素都染成背景色&#xff0c;使得重要部分被凸显出来。现给定一幅黑白图像&#xff0c;要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换。 输入格式&#xff1a; 输入在第一行给出一幅图像的分辨率&#xff0c;即两个正整数 M…

从零实现一个http服务器

如果GET请求带参数&#xff0c;那么一般是附加在请求的url后面&#xff0c;参数与参数之间使用&分割&#xff0c;例如请求http://www.hootina.org/index_2013.php?param1value1m2value2m3value3&#xff0c;我们看下这个请求组装的的http协议包格式&#xff1a; GET /ind…

1068 万绿丛中一点红 (20 分)

对于计算机而言&#xff0c;颜色不过是像素点对应的一个 24 位的数值。现给定一幅分辨率为 MN 的画&#xff0c;要求你找出万绿丛中的一点红&#xff0c;即有独一无二颜色的那个像素点&#xff0c;并且该点的颜色与其周围 8 个相邻像素的颜色差充分大。 输入格式&#xff1a; 输…

《个人项目学习指引》

1. 从零实现一个http服务器

1069 微博转发抽奖 (20 分)

小明 PAT 考了满分&#xff0c;高兴之余决定发起微博转发抽奖活动&#xff0c;从转发的网友中按顺序每隔 N 个人就发出一个红包。请你编写程序帮助他确定中奖名单。 输入格式&#xff1a; 输入第一行给出三个正整数 M&#xff08;≤ 1000&#xff09;、N 和 S&#xff0c;分别是…

【1】TCP三次握手的第三次的 ack包丢失会怎样?

面试题&#xff1a; 在 TCP 建立连接的三次握手连接阶段&#xff0c;如果客户端发送的第三个ACK包丢了&#xff0c;那么客户端和服务端分别进行什么处理呢&#xff1f; 相信了解 tcp 协议的人&#xff0c;三次握手的过程肯定很了解了。第三次的 ack 包丢失就是说在 client 端…

1070 结绳 (25 分

给定一段一段的绳子&#xff0c;你需要把它们串成一条绳。每次串连的时候&#xff0c;是把两段绳子对折&#xff0c;再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子&#xff0c;可以再次对折去跟另一段绳子串连。每次串连后&#xff0c;原来两段绳子的长度就会减…

动态规划目录

序号题目1 70. 爬楼梯

1071 小赌怡情 (15 分)

常言道“小赌怡情”。这是一个很简单的小游戏&#xff1a;首先由计算机给出第一个整数&#xff1b;然后玩家下注赌第二个整数将会比第一个数大还是小&#xff1b;玩家下注 t 个筹码后&#xff0c;计算机给出第二个数。若玩家猜对了&#xff0c;则系统奖励玩家 t 个筹码&#xf…

53. 最大子序和

给定一个整数数组 nums &#xff0c;找到一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大&#xff0c;为 6。 进阶: 如果你已经实现…