关于c++多重继承下的函数调用注意的问题

C++多继承动态交叉转换dynamic_cast 1. 问题简述:          有如下源代码:          Class BaseA; Class BaseB; Class SubClass:public BaseA,public BaseB { ... }      现有如下变量定义:  BaseA* insA = new SubClass(...); BaseB* insB; 请问如何将insA指向的对象正确赋值给BaseB 阅读详情
#include <iostream>
using namespace std;

class A  //commserver
{
public:
	virtual void g()=0;
	virtual void f()  //f deal_all_msg  //g deal_busseines_msg
	{
		printf("A\n");
		g();
	}
};

class B:public  A  //anydsc
{
public:
	 virtual void f()
	{
		printf("B\n");
		
	}
};

class C: public  B  //uportal
{
public:
	virtual void g()
	{
		printf("C\n");
	}


};

class D:public A
{
	virtual void g()
	{
		printf("D\n");
	}
};

int main()
{
	A* x = new C;
	x->g();  //不会执行基类A里面的方法,B的f方法覆盖了
	delete x;

	A* y = new D;
	y->f();
	delete y;
	system("pause");
	return 0;
}



c++继承总结和注意事项 阅读详情

相关推荐

达梦数据守护集群监视器详解与应用指南

主库/备库:承担读写和只读服务的数据节点Redo 日志:记录数据库变更的核心日志Redo 日志传输:主备库间的日志同步机制Redo 日志重演:备库重做日志的应用过程守护进程 (dmwatcher):实例级别的监控和管理组件监视器 (dmmonitor):集群级别的监控和管理工具监视器作为数据守护系统的重要组成部分,提供了集群监控、故障管理和状态确认等关键功能。达梦数据守护集群监视器是维护数据库高可用性的关键工具。

huanhuanzhou blog 1058

C++虚函数介绍以及在多层继承中调用 & 在多重继承中调用

C++虚函数在多层继承中调用 & 在多重继承中调用1 多层继承1.1 介绍1.2 示例2 多重继承 1 多层继承 1.1 介绍 在一个类中的虚函数说明,只对派生类中重定义的函数有影响,对它的基类中的函数不起作用。 1.2 示例 class A { public: virtual void show() { std:...

天道酬勤 3476

WPS Office 2019 For Linux二次开发全流程:从源码下载到Demo运行

本文详细介绍了在Linux环境下进行WPS Office 2019 C++二次开发的全流程,涵盖从开发环境准备、源码获取、核心依赖(Qt与WPS)安装配置,到最终编译运行官方Demo的完整步骤。文章重点解析了环境搭建中的常见问题与解决方案,旨在帮助开发者快速上手WPS二次开发。

weixin_29001423的博客 390

多重继承同名函数调用

在主程序中派生类对象child可调用派生类中的成员函数display,若要调用基类的成员函数display,可在派生类的成员函数display中调用基类的成员函数display,但必须在该成员名之前加上基类名和作用域标识符::代码示例如下:#include&lt;iostream&gt; #include&lt;string&gt; using namespace std; class Time{...

Emebaraly的博客 3678

【AI Agent】Harness Engineering实践

Harness(运行宿主)是围绕 LLM构建的一套确定性工程系统,其核心职责是:承认模型的固有局限,用可控的工程手段逐一弥补,使"强大但不可靠的推理引擎"变成"可信赖的生产级Agent"模型 是发动机——提供原始动力Agent 是驾驶员——做出决策Harness 是道路、地图、护栏、仪表盘、维修站和质检线——确保行驶安全有序没有Harness,模型越强,可能只是更快地制造混乱。

sysu_lluozh 192

【图像去噪】基础知识之加噪 | 给图像加噪的若干种方式,包括加高斯白噪声(AWGN)、泊松-高斯噪声、模拟真实噪声(SIDD、DND)等

本文介绍给干净图像加噪的若干种方式,新手入门必看!。根据noise类型不同,产生不同的Noisy,Noisy一般是模型输入。【图像去噪】基础知识之图像流 | 图像从输入到输出的前世今生,包括类型变化、维度变化、数值变化等。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1099

小白刷题(1)

1. C++中函数定义和调用的嵌套: 函数的调用可以嵌套,但是函数的定义不可以嵌套。 #include<iostream.h> int SwpInt(int *a,int *b) { int c; c=*a; *a=*b; *b=c; return a; } void main() { int e=12; int f=89; SwpInt(&e...

MJ_rookie的博客 545

OpenHarmony WiFi子系统全解析:从架构到代码实现(大合集)

头文件路径[相对路径][相对路径][相对路径][相对路径]// 网络配置结构 (wifi_device_config.h)// SSID字符串// 预共享密钥// 安全类型// 网络ID// 优先级// 是否隐藏网络// 扫描信息结构 (wifi_scan_info.h)// SSID// BSSID (MAC地址)// 安全类型int rssi;// 信号强度// 频率// 信道宽度// 时间戳// 连接信息结构 (wifi_linked_info.h)

m0_67505153的博客 1059

C++之多重继承

大多数应用程序使用单个基类的公用继承,但是在某些情况下,单继承是不够的,必须使用多继承。C++允许为一个派生类指定多个基类,这样的继承结构被称做多重继承. 举个例子,交通工具类可以派生出汽车和船连个子类,但拥有汽车和船共同特性水陆两用汽车就必须继承来自汽车类与船类的共同属性。如下图示: 代码实现: //多重继承 #include &lt;iostream&gt; using namesp...

yhc166188的博客 1万+

相机Camera日志分析之二十六:高通相机Camx 基于预览1帧的process_capture_request重要完整日志【见注释】

文章摘要:该日志记录了一个相机预览请求的处理流程。系统从HAL层开始处理capture_request,填充预览/拍照的buffer数据,并激活相关pipeline。流程涉及多个模块(ChiNodeWrapper、IFE、IPE等)的协同工作,包括获取ImageBuffer、设置请求映射关系、处理特征美颜参数(开关状态0,级别1)等关键步骤。日志详细展示了从请求下发到各节点处理的完整链路,包含多次buffer获取、fence设置及数据传递过程,最终完成预览帧数据的处理和保存(第0帧和第1帧)。该流程体现了移

517

基于MATLAB的井筒多相流模拟

井筒多相流的模拟可以基于不同的数学模型和计算方法。其中,最常用的模型之一是多相流模型,它基于质量守恒、动量守恒和能量守恒等原理,描述了流体在井筒中的流动行为。对于井筒多相流的模拟和分析可以帮助我们理解和优化油气田开发过程中的流体行为,从而提高产量和效率。在本文中,我们将介绍如何使用MATLAB进行井筒多相流的模拟,并提供相应的源代码。需要注意的是,以上示例是一个简化的模拟,仅用于演示如何使用MATLAB进行井筒多相流模拟。实际应用中,我们需要考虑更多的物理过程和参数,并使用更复杂的数值方法和模型进行模拟。

AtdiHtml的博客 706

【C++高级主题】多重继承

在 C++ 的面向对象编程中,继承(Inheritance)是实现代码复用和类型扩展的核心机制。我们熟悉的 “单继承”(Single Inheritance)允许一个派生类从一个基类继承属性和方法,但现实中的复杂场景往往需要更灵活的模型 —— 例如,一个 “智能手表” 类可能需要同时继承 “计时器”(Timer)和 “通信模块”(Communication)两个独立的基类。这时,C++ 提供的多重继承(Multiple Inheritance)就能大显身手。

byte轻骑兵的技术小窝 1960

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C++ 多重继承

C++ 编程语言技术知识积累

xiaogangjava的博客 5539

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C++:多重继承带来的问题及解决方法

使用多继承经常会出现二义性问题,必须十分小心。上面的例子是简单的,如果继承的层次再多一些,关系更复杂一些,程序员就很容易陷人迷魂阵,程序的编写、调试和维护工作都会变得更加困难

weixin_62946182的博客 3583

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C++ 多继承和多重继承

一、多重继承 多重继承是一个类的父类也有父类,一层一层的继承父类。 多重继承的对象初始化方式最高的父类到子类。 A()–>B–>C() 销毁时正好是初始化的反顺序。 ~C–>~B–>A() class A{}; class B:public A{}; class C:public B{}; 用子类初始化父类,为避免内存泄露,父类的构析函数最好用virtual 修饰。 二、多继承 多继承:一个子类拥有很多父类 ,一般指一个类有2个以上父类。 多继承的定义:派生类的基..

qq_20853741的博客 6537

C++ 继承(2): 多重继承, 多继承, 虚继承(virtual)

C++远征之继承篇 视频教程 笔记 方便自己查阅和复习,温故而知新。 接着C++ 继承(1): 继承方式(public, protected, private), 继承中的特殊关系(隐藏 , is-a) 继续做笔记 目录 4 多继承与多重继承 4.1 多重继承 4.2 多继承 代码示例 5 虚继承 代码示例 参考资料 4 多继承与多重继承 4.1...

TechArtisan6的博客 5120

【C++】多重继承与虚继承

虚继承可以解决二义性和A被构建多次这两个问题,普通继承不能解决;虚继承通过增加一个指针(浪费了一点存储空间),换取了更高的效率只要一个类虚继承了其它类,那么该类所有的对象中都会新增一个指针,该指针专门用来指向系统中虚基类表的首地址。

qq_62917398的博客 1253

C++中的多重继承与虚继承

先记一下,C++中的关键字,virtual,直译为虚拟的,非真实的。上文讲过多继承,实际情况会更复杂,如果有以下状态,也就是A同时是B和C的父类,然后B和C又同时是D的父类。这样的结构,又被称为菱形继承。如果此时我们使用C的实例化对象,来调用A中的成员,此时编译器就不知道到底走D-B-A,还是D-C-A。路径在这里可以直接用上面构造函数或析构函数来理解,即到底是D-B-A的路径去调用构造函数,还是走D-C-A去调用构造函数。虚继承的目的是让某个类做出声明,承诺愿意共享它的基类。其中,

WE_BIG的博客 1090

Java中的多重继承问题

这样做不仅是为了继承超类的功能,也是为了通过继承的类赋予新的含义。通过这种方式,一个类可以实现多个接口,因此可以提供从一个或多个接口派生的方法的具体实现。因此,在创建子类时,我们指定它使用现有类的成员,而不是声明所有新的类成员。因此,如果多个接口包含具有相同方法签名的默认方法,则实现的类应指定要使用或重写的特定方法。一般而言,各种面向对象的编程语言支持多种类型的继承,例如单级继承、多级继承、多级继承、多路径继承、分层和混合继承。因此,实现相同接口的类的对象可以响应所有接口中描述的方法调用。

allway2的博客 5589

C++多重继承相关问题

多重继承的问题,首先想到多继承构造函数如何处理?   Symbian下是可以一个C类多个M类多重继承的   C++中的多继承,构造函数处理并没有问题,对象构造的时候按照继承中声明的顺序调用多个父类的构造函数,析构函数同样遵守单继承中的原则。 二意性问题   如果多基类中存在同名成员,会产生二意性的问题   比如,Root1类中声明DoAny()接口,Root2类中也声明了DoAny()接

omegayy的专栏 6690

C++多层继承与多重继承父类指针转换以及注意事项

无论是多层继承还是多重继承,都支持父类指针指向子类对象(向上转型),这是多态的基础。多层继承的核心注意事项是:虚析构、成员访问范围、向下转型安全性。多重继承需额外关注:成员二义性、菱形继承的虚继承解决、指针地址偏移问题。合理使用父类指针可以简化代码(如用统一的父类指针容器管理不同子类对象),但需根据继承结构的复杂性针对性规避风险。

u010632343的博客 1056

Cpp多重继承会产生的问题

多重继承常常被认为是 OOP 中一种复杂且不必要的部分。多重继承面临 crash 的场景并非难以想象,来看下面的例子。 1. 名称冲突 来看以下情况: 如果 Dog 类以及 Bird 类都有一个名为 eat() 的方法,而子类又没有 override 该方法。如果此时调用子类的 ea...

chuifuhuo6864的博客 801

C++ 中的多重继承(Multiple Inheritance)

多重继承是指一个子类可以拥有多个基类。在 C++ 中,子类通过使用多个基类的继承声明来实现这一点。多重实现继承:多个基类中都包含实现代码(即数据成员和函数的具体实现)。接口与实现混合继承:一个基类提供实现代码,其他基类仅作为纯接口(纯虚函数定义,没有实现)。纯接口类:仅包含纯虚函数(= 0),不提供实现,通常以Interface为后缀。实现类:包含数据成员和函数的具体实现。// 子类定义定义:多重继承允许子类继承多个基类,可以是实现继承或接口继承。优点:增强代码重用和灵活性。缺点。

cxyhjl的博客 1115
上一篇: gdb 和 watchpoint
下一篇: GDB中应该知道的几个调试方法
RunBoying
博客等级 码龄17年 41粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值