当前位置: 首页 > news >正文

C++:继承】面向对象编程精要:C++继承机制深度解析与最佳实践

1 ~> 继承基础与概念解析

1.1 继承的核心概念
1.1.1 继承的本质与定义

继承(inheritance)本质是类设计层次的复用。

继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的函数层次的复用,继承是类设计层次的复用。

假如我们现在要设计一套图书管理系统/学生管理系统,甚至于说学校的门禁系统(这里插一句题外话,),我们需要做的第一步就是设计定义出有哪些类(如学生、老师、保安、食堂阿姨)。

有些信息/方法是独有的,有些则是公共的(大家都有)。同理,有些成员是公共的,每个都写出来就实在是太恶心了,为了方便,我们就要用到接下来我们要介绍的继承——复用——直接用别人的,只不过以前复用的是函数,现在的继承变成了类设计层面的复用。

1.1.2 【拓展视野】企业组织架构与类设计的类比

这里既然说到设计了,艾莉丝就插个题外话:虽然我们大多是奔着研发岗 / 测试开发岗 / 测试岗去的,但还是要懂一些产品设计的知识,当然产品设计是由公司里面的产品经理把控的,有些小一点的公司可能人手不够,很多人身兼数职,比如产品经理既是产品经理又是项目经理,甚至于在小公司老板自己可能就是产品经理,这里提到的项目经理已经是管理层了,偏领导,既然都介绍到公司的岗位划分了,我们就再简单了解一下吧——

1.1.3 类体系设计方法论——第一步:设计定义出有哪些类

公共的特性,抽取出来,放到一个公共类(父类/基类)里面——

1.1.4 继承机制的优势与便利性

下面我们看到没有继承之前我们设计了两个类Student和Teacher,Student和Teacher都有姓名/地址电话/年龄等成员变量,都有identity身份认证的成员函数,设计到两个类里面就是冗余的。当然他们也有一些不同的成员变量和函数,比如老师独有成员变量是职称,学生的独有成员变量是学号;学生的独有成员函数是学习,老师的独有成员函数是授课——

代码语言:javascript

AI代码解释

class Student { public: // 进⼊校园/图书馆/实验室刷⼆维码等⾝份认证 void identity() { // ... } // 学习 void study() { // ... } protected: string _name = "peter"; // 姓名 string _address; // 地址 string _tel; // 电话 int _age = 18; // 年龄 int _stuid; // 学号 }; class Teacher { public: // 进⼊校园/图书馆/实验室刷⼆维码等⾝份认证 void identity() { // ... } // 授课 void teaching() { //... } protected: string _name = "艾莉丝"; // 姓名

那我们就把公共的成员都放到Person类中,Student和teacher都继承Person,就可以复用这些成员,就不需要重复定义了,这样省去了很多麻烦——

代码演示如下——

代码语言:javascript

AI代码解释

class Person { public: // 进入校园/图书馆/实验室刷二维码等身份认证 void identify() { cout << "void identify()" << _name << endl; } void func() { cout << _age << endl; } protected: string _name = "艾莉丝"; // 姓名 string _address; // 地址 string _tel; // 电话 private: int _age = 18; // 年龄 }; class Student : public Person { public: // 学习 void study() { //// . . . //// 基类私有成员(类比“爸爸的私房钱”),派生类中不可见,语法上限制不能直接使用 //cout << _age << endl; // 但是可以间接使用 func(); } protected: int _stuid; // 学号 }; class Teacher : public Person { public: // 授课 void teaching() { // . . . } protected: string _title; // 职称 }; int main() { Student s; Teacher t; s.identify(); s.study(); return 0; }

运行一下——

1.2 继承语法与访问控制
1.2.1 继承定义的标准格式

下面我们看到Person是基类,也称作父类Student是派生类,也称作子类。(这主要是因为因为翻译的原因,所以既叫基类 / 派生类,也叫父类 / 子类)

http://www.jsqmd.com/news/476553/

相关文章:

  • STM32C8T6+WS2811 RGB彩灯时序调试实战与PWM控制对比
  • 为什么要做信创产品评估测试?对企业有哪些核心好处?
  • 一文读懂AI智能体(Agent):小白也能掌握的大模型应用新方向
  • 网站进入后台后,提示“后台 JavaScript 加载失败”,部分功能(如编辑文章、切换菜单)无法使用问题|已解决
  • 2026年真空袋厂家电话查询推荐:高效对接与使用贴士 - 十大品牌推荐
  • Cadence Bandgap电路设计实战:从稳定性、噪声到PSRR的仿真优化全解析
  • 基于改进鹈鹕算法(IPOA)优化BP神经网络的时间序列预测(IPOA-BP) 鹈鹕算法是202...
  • C++:继承和多态】多态加餐:面试常考——多态的常见问题11问
  • 2026河北木纹水泥板厂商综合实力与选型指南 - 2026年企业推荐榜
  • Leather Dress Collection LoRA集合详解:各模型训练数据分布与风格边界说明
  • BMS软件架构实战 — 继电器驱动与状态诊断策略
  • AgenticRAGTracer:首个LLM自动构建的Agentic RAG多跳推理诊断工具,小白也能轻松学习大模型评估方法
  • Multisim实战:从零构建MC1496振幅调制器(附仿真、PCB与调试全记录)
  • 2026年选购指南:胶粘石胶水直销厂家综合实力解析 - 2026年企业推荐榜
  • 深入解析大语言模型智能体:核心架构与多智能体协作框架,值得收藏的深度指南
  • 【DVWA实战】File Upload High级别攻防:绕过三重校验与哥斯拉图片马实战
  • ESP32-S3全向轮机器人:三轮FPV小车嵌入式设计
  • shell
  • 广州电动货车租赁推荐,哪家品牌好又价格实惠 - 工业推荐榜
  • AI赋能抢码新思路:通过快马平台开发具备学习能力的智能自适应抢码器
  • 从仿真到实战:基于Multisim的推挽型射极跟随器设计与失真优化
  • 【从键盘序到精准字典】一次高效哈希爆破的实战复盘
  • 2026年广州值得选的汽车品牌,宝骏悦也plus科技感足吗 - 工业品网
  • 2026年3月,探寻知名撒肥机公司的卓越之道 - 2026年企业推荐榜
  • 从仿真到真机:人形机器人强化学习策略部署实战
  • 解决CMake升级后CMAKE_ROOT缺失问题的完整指南
  • 从零开始:手动搭建Jumpserver堡垒机全流程指南
  • 网站空白页(无任何提示,仅显示空白)错误怎么办|已解决
  • 2026年口碑好的钢结构加工定制方案推荐,专业厂家全解析 - 工业品牌热点
  • Wan2GP V18版 - 低显存畅享AI视频创作,InfiniteTalk长对话与Flux Chroma 1 HD双模加持 全面适配50系显卡