news 2026/6/10 19:39:46

#多重继承

作者头像

张小明

前端开发工程师

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/6/10 14:04:49

sklearn中fit、transform、fit_transform用法详解

1. 基本概念 这三个方法是 scikit-learn 转换器&#xff08;Transformer&#xff09;的核心方法&#xff1a; fit() - 学习数据的参数&#xff08;如均值、标准差等&#xff09; transform() - 应用学到的参数转换数据 fit_transform() - 一次性完成学习和转换 2. 详细解释 fit…

作者头像 李华
网站建设 2026/6/10 15:16:30

未来10年就业率高的四个专业,毕业生很好就业,家长可放心!

未来10年就业率高的四个专业&#xff0c;毕业生很好就业&#xff0c;家长可放心&#xff01; 填报志愿季又到了 . 家长群里炸开了锅. "选什么专业孩子以后不愁工作?"这个问题, 我每年都被问几百遍. 说实话. 市场在变. 专业冷热也在轮转. 但有四个专业, 未来十年的…

作者头像 李华
网站建设 2026/6/10 13:06:55

用Nginx日志风格复刻《黑客帝国》代码雨:终端里的赛博朋克特效

前言&#xff1a;《黑客帝国》的绿色数字雨是赛博朋克经典符号&#xff0c;也是不少人对“代码之美”的初印象。出于对这个经典画面的喜爱&#xff0c;我决定复刻一款数字雨脚本。 网上现存版本多有痛点&#xff1a;单系统适配、易闪烁乱码、依赖第三方库。因此我用Python内置库…

作者头像 李华
网站建设 2026/6/10 13:04:30

Thinkphp-Laravel微信小程序的社区后勤报修系统

目录摘要项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理摘要 ThinkPHP-Laravel微信小程序社区后勤报修系统是一款基于Web和移动端的综合性服务平台&#xff0c;旨在为社区居民提供便捷的报修、投诉及后勤管理功能。系统采用ThinkPHP和Laravel双框…

作者头像 李华