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

【C++程序设计第7课--继承】

引言

本文为C++编程学习者引入继承的概念,通过示例代码的形式展现,希望能帮大家降低入门门槛。内容为个人学习经验总结,本章内容较多,如有疏漏,感谢指正。

一、继承的概念

类的继承:一个新的类从已有类那里获得已有特性的现象。
类的派生:在已有类(父类)上建立一个新的类的现象。
父类:基类,已有的类
子类:派生类,新的类
兄弟类:同一个父类的多个子类。
最远派生类:最远的子类。

本质:将父类的内容拷贝了一份到子类空间。
注意:派生类继承了 基类所有的数据成员 和 成员函数(构造、析构除外)

派生一个子类的语法:
class 子类名 : 权限限定符 父类名1, 权限限定符 父类名2, …
{
类体
};

继承时的权限

隐式向上转换

子类指针可以转换成基类指针(多态涉及)

继承与组合

继承 – is-a 关系:大学生是学生 、虎宝猫是猫

组合 – has-a关系:汽车有发动机、变速器、轮子

二、公有继承 public_inherit

公有继承时,派生类对象只能访问基类 公有成员,派生类内部只能访问基类 公有、保护成员。

示例代码

#include<iostream>usingnamespacestd;classBase{public:floatmoney=12;protected:floatgetMoney(){cout<<__func__<<endl;returnmoney;}private:inteyes=2;};// 从 base 类派生出子类 Subclass,或者是 定义类Subclass 继承于 Base类classSubclass:publicBase{//公有继承public:voidtest(){cout<<money<<endl;cout<<getMoney()<<endl;// cout << eyes << endl; //错误,私有的成员不能被访问}};intmain(){Subclass sub;//定义派生类对象cout<<sub.money<<endl;// cout << sub.getMoney() << endl; //错误,getMoney是受保护的// cout << eyes << endl; //错误,eyes为私有的}

三、保护继承 protected_inherit

保护继承时,派生类对象不能访问基类 任何成员,派生类内部只能访问基类 公有、保护成员。
保护继承时,基类 public权限变成 protected权限。

示例代码

#include<iostream>usingnamespacestd;classBase{public:floatmoney=12;protected:floatgetMoney(){cout<<__func__<<endl;returnmoney;}private:inteyes=2;};classSubclass:protectedBase{//保护继承public:voidtest(){cout<<money<<endl;cout<<getMoney()<<endl;// cout << eyes << endl; //错误,私有的成员不能被访问}};intmain(){Subclass sub;// cout << sub.money << endl;// cout << sub.getMoney() << endl; //错误,getMoney是受保护的// cout << eyes << endl; //错误,eyes为私有的}

四、私有继承 private_inherit

私有继承时,派生类对象不能访问基类 任何成员,派生类内部只能访问基类 公有、保护成员。
私有继承时,基类 public、protected 权限变成 private权限。

示例代码

#include<iostream>usingnamespacestd;classBase{public:floatmoney=12;protected:floatgetMoney(){cout<<__func__<<endl;returnmoney;}intgetEyes(){
http://www.jsqmd.com/news/638105/

相关文章:

  • 忙得上天入地的导师派师姐助我毕设之救我狗命笔记(一)
  • 千问3.5-2B Java面试题智能辅导:刷题与知识点解析
  • 手把手教你用BERT+HanLP搞定中文社交媒体仇恨言论识别(附完整代码与数据集)
  • 忍者像素绘卷在社区运营中的应用:粉丝定制像素头像活动案例
  • Chrome文本替换插件终极指南:如何智能编辑任何网页内容
  • 忍者像素绘卷:天界画坊在软件测试中的应用:自动化生成测试用例图示
  • 智慧城市顶层设计与底层对接(上篇):战略规划与总体架构实操
  • 【基于文本的运动生成text-to-motion】Hi-Motion: Hierarchical Intention Guided Conditional Motion Synthesis
  • 基于FunASR的智能语音助手搭建:WebUI界面操作,支持实时对话
  • AI Agent vs 区块链:哪个才是真正的风口
  • 使用CNN增强cv_resnet50_face-reconstruction的边缘细节处理
  • Leather Dress Collection 与Visio结合:从文本描述自动生成系统架构图
  • 智能垃圾桶项目避坑指南:STM32驱动舵机、语音模块的那些‘坑’与解决方案
  • 408代码题拿分秘籍:暴力解法真的比你想的更有用(附历年真题实战)
  • 前端开发者必看:html-to-image 终极指南 - 轻松将网页元素转为高清图片
  • 0代码AI开发多品牌交换机配置备份系统 BS架构 Python
  • AI Agent开发学习顺序:工具调用到完整交付
  • 软件测试(黑马)
  • linux驱动编程2 : uboot、Linux内核、rootfs来源及制作流程
  • Qwen3.5-2B目标检测新思路:辅助YOLOv5提升小目标识别精度
  • 【DAY38】ARM 架构嵌入式开发核心:最小系统设计、Linux 驱动与系统烧写要点总结
  • HEIF Utility:突破Windows平台HEIF格式兼容性壁垒的一站式解决方案
  • 从查重焦虑到降重自由:Paperxie,本科生论文通关的「隐形导师」
  • 保姆级教程:在Simulink里用Three-Phase Fault模块模拟VSG并网线路故障(含单相接地/两相短路)
  • Go语言的sync.Map原子操作与读复制更新在并发写少场景下的设计
  • AIVideo问题解决指南:部署配置、环境变量修改常见问题汇总
  • Llama Factory部署教程:简单几步搭建大模型微调环境
  • 让能源生产融入日常风景——零碳园区光伏+智慧设施集成应用
  • 行为发生的完整机制与统一公式(新版稿2026年4月1)
  • YOLOv11改进:检测头篇 | 红外小目标 | CAMixing + P2头:卷积-注意融合模块和多尺度提取能力