news 2026/4/3 4:54:51

#多重继承

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
#多重继承

多重继承

定义:一个子类可以同时继承多个父类的属性和方法:

核心定义 :多重继承是面向对象编程(OOP)中的一种特性,指一个子类可以同时继承多个父类的属性和方法,相当于一个孩子同时继承了爸爸、妈妈甚至更多长辈的特征。
特点:子类可以从多个父类中继承成员变量和成员函数;
需要注意同名成员的冲突问题;
多重继承的语法格式
第一种方式(推荐):
class基类类名10:
class基类类名2:
class子类类名:继承方式基类类名1,继承方式基类类名2{}:
第二种方式:
class基类类名1:
class基类类名2:
class子类类名:继承方式基类类名1,基类类名2{:

#include <iostream> using namespace std; // 自定义基类Base class Base{ public: int value; // Base类的公共成员变量 }; // 自定义基类Base1 class Base1{ public: int value; // Base1类的公共成员变量,与Base类中的成员变量同名 }; // 自定义子类Son1,采用多继承方式,同时继承Base和Base1类 // 语法:class 子类名 : 继承方式1 基类名1, 继承方式2 基类名2, ... class Son1:public Base,public Base1{ public: void print(){ // 注意:直接访问value会产生二义性错误,因为两个基类都有同名成员 // 编译器无法确定应该访问Base::value还是Base1::value // cout << "value=" << value << endl; // 这行代码会编译错误 // 解决方法:使用"类名::"作用域限定符明确指定访问哪个基类的成员 Base::value = 100; // 访问并修改Base类中的value cout << "Base::value=" << Base::value << endl; // 输出Base类中的value Base1::value = 200; // 访问并修改Base1类中的value cout << "Base1::value=" << Base1::value << endl; // 输出Base1类中的value } }; int main(){ // 实例化子类Son1的对象s1 Son1 s1; // 调用子类的print方法 s1.print(); return 0; }

链式继承

链式继承:
是指子类依次从多个父类继承,形成一条链条状的继承结构;
每个子类只继承一个直接父类,但通过多层继承关系,可以间接访问更上层基类的成员:
语法格式:
class A {};
class B:public A{};
class C:public B (){};

链式继承,简单来说就是子类继承父类,这个父类又继承另一个更高层级的父类,形成一条 “链条式” 的继承关系。就像家族的辈分传承:孙子 → 父亲 → 爷爷 → 曾祖父,每一层都能继承上一层的特征,也能新增自己的特征。

#include <iostream> using namespace std; // 基类A:定义了最基础的保护成员变量 class A { protected: // 保护访问权限:派生类可访问,外部不可访问 int pro_A; // 基类A的保护成员变量 }; // 派生类B:公有继承自基类A,同时作为类C的基类(中间层基类) class B : public A // public继承方式:基类的public/protected成员在派生类中保持原访问级别 { public: // 打印函数:访问继承自A的pro_A和自己的pro_B void print(){ cout << "pro_A=" << pro_A << endl; // 可直接访问继承自A的保护成员 cout << "pro_B=" << pro_B << endl; // 访问自己的保护成员 } protected: int pro_B; // 类B自己的保护成员变量 }; // 派生类C:公有继承自中间基类B,形成A→B→C的多级继承链 class C : public B { public: // 重写print函数:访问从A、B继承的保护成员以及自己的保护成员 void print(){ // 为三个层次的保护成员赋值 pro_A = 111; // 可直接访问来自A的保护成员(通过B间接继承) pro_B = 222; // 可直接访问来自B的保护成员 pro_C = 333; // 访问自己的保护成员 // 输出三个保护成员的值 cout << "pro_A=" << pro_A &l
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/2 4:17:44

【半导体基础】快速计算原子最外层电子数

在化学和材料科学领域&#xff0c;快速确定原子的最外层电子数&#xff08;价电子数&#xff09;是理解元素化学性质、预测化学反应和进行材料设计的基础。本文将介绍几种高效确定原子最外层电子数的方法&#xff0c;并提供实用的记忆技巧和示例。 一、理解基本概念 最外层电子…

作者头像 李华
网站建设 2026/3/31 23:24:50

报名开启|G-Star Gathering Day 广州站

在这个 AI 技术日新月异的时代&#xff0c;开发者该如何精准把握技术趋势&#xff0c;将创意转化为现实&#xff1f;G-Star Gathering Day 广州站正式开启&#xff01;本次活动由 AtomGit 及华为云开发者联盟 HCDG 主办&#xff0c;我们诚邀广大 AI 从业者、开源技术爱好者齐聚…

作者头像 李华
网站建设 2026/3/11 16:48:23

摄像头相关记录

1、视频流获取 RTSP视频流传输协议 ffmpeg视频流处理工具&#xff1a;获取&#xff08;摄像头&#xff0c;网络&#xff0c;本地&#xff09;&#xff0c;处理 优势&#xff1a;支持多种传输协议&#xff0c; 会根据传输协议调整&#xff0c;更加方便的获取数据&#xff0c;…

作者头像 李华
网站建设 2026/3/30 3:12:08

正交电感的频率特性测量

01 正交电感频率特性 空心正交电感两路线圈信号极值偏移方向 初步测量结果 设置扫描范围&#xff0c; 从100kHz 到 200kHz&#xff0c;  这是扫描小型工字型正交电感对应的结果。 他的谐振峰小于 150kHz。  可以看到在 150kHz的时候 两个通道之间有 23dB 的衰减。  这是大型…

作者头像 李华