C++ 中的继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产。
继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。
在C++中,派生(Derive)和继承是一个概念,只是站的角度不同。继承是儿子接收父亲的产业,派生是父亲把产业传承给儿子。
被继承的类称为父类或基类,继承的类称为子类或派生类。“子类”和“父类”通常放在一起称呼,“基类”和“派生类”通常放在一起称呼。
派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。
以下是两种典型的使用继承的场景:
1) 当你创建的新类与现有的类相似,只是多出若干成员变量或成员函数时,可以使用继承,这样不但会减少代码量,而且新类会拥有基类的所有功能。
2) 当你需要创建多个类,它们拥有很多相似的成员变量或成员函数时,也可以使用继承。可以将这些类的共同成员提取出来,定义为基类,然后从基类继承,既可以节省代码,也方便后续修改成员。
下面我们定义一个基类 People,然后由此派生出 Student 类:
#include<iostream>
using namespace std;
//基类 Pelple
class People{public:void setname(char *name);void setage(int age);char *getname();int getage();
private:char *m_name;int m_age;
};
void People::setname(char *name){ m_name = name; }
void People::setage(int age){ m_age = age; }
char* People::getname(){ return m_name; }
int People::getage(){ return m_age;}class Student:public People{public:void setscore(float score);float getscore();
private:float m_score;
};
void Student::setscore(float score){ m_score = score; }
float Student::getscore(){ return m_score; }
int main(){Student stu;stu.setname("小明");stu.setage(16);stu.setscore(95.5f);cout<<stu.getname()<<"的年龄是 "<<stu.getage()<<",成绩是 "<<stu.getscore()<<endl;return 0;
}

运行结果:

小明的年龄是 16,成绩是 95.5

本例中,People 是基类,Student 是派生类。Student 类继承了 People 类的成员,同时还新增了自己的成员变量 score 和成员函数 setscore()、getscore()。这些继承过来的成员,可以通过子类对象访问,就像自己的一样。

C++继承和派生简明教程相关推荐

  1. python多态_Python 简明教程 21,Python 继承与多态

    程序不是年轻的专利,但是,它属于年轻. 目录 目录 我们已经知道封装,继承和多态 是面向对象的三大特征,面向对象语言都会提供这些机制. 1,封装 在这一节介绍类的私有属性和方法的时候,我们已经讲到过封 ...

  2. Swagger2 简明教程

    Swagger2 简明教程 一.什么是swagger 二.配置swagger 三.Swagger常用注解 四.导出swagger接口文档 一.什么是swagger Swagger 是一个规范和完整的框 ...

  3. sqlalchemy mysql_SQLAlchemy简明教程

    原文可见:SQLAlchemy简明教程 - Jiajun的编程随想 SQLAlchemy是Python中常用的一个ORM,SQLAlchemy分成三部分: ORM,就是我们用类来表示数据库schema ...

  4. 简明python教程pdf-python简明教程中文pdf

    python简明教程中文pdf电子书是作者通过自己对计算机语言多年来的研究和学习得出的学习经验,对于python新手来说非常有用,值得大家下载学习. python简明教程中文pdf文章目录 1.介绍 ...

  5. 简明python教程在线-Python简明教程

    Python简明教程在线阅读地址: https://bop.molun.net/ DocStrings 该文档字符串所约定的是一串多行字符串,其中第一行以某一大写字母开始,以句号结束.第二行为空行,后 ...

  6. UML精粹--标准对象建模语言简明教程

    今天借了一本<UML精粹--标准对象建模语言简明教程>(Uml Distilled: A Brief Guide to the Standard Object Modeling Langu ...

  7. mobx中跟新了数据视图没变化_【第1781期】MobX 简明教程

    前言 SEEConf,2020年1月4号杭州见,C位抢票见文章末尾.今日早读文章由腾讯@whinc投稿分享. 正文从这开始-- 导读:MobX 是一个优秀的响应式状态管理库,在流行的状态管理库 Red ...

  8. python程序设计简明教程知识点总结_Python程序设计简明教程 在线阅读

    介绍\u201CPython编程简明教程\u201D解释了Python语言的基本知识和基本应用技能与简洁的语言和易于理解的例子.\u201CPython编程简明教程\u201D由9章,主要解释Pyth ...

  9. ArcGIS Pro 简明教程(4)工具和模型构建器

    ArcGIS Pro 简明教程(4)工具和模型构建器 by 李远祥 工具箱中的工具 ArcGIS Pro 在1.3版本基本上已经继承了ArcMap的所有工具,而且会不断加入一些它自身才有的工具,例如适 ...

最新文章

  1. redis、memcache、mongoDB有哪些区别?
  2. NTU课程 CE7454 回归与分类
  3. 周昌印:忘记技术 从用户与市场考虑问题
  4. python 参数_python脚本命令行参数解析
  5. 2.4g 无线键鼠对码软件_RK526无线键鼠套装开箱体验
  6. Dijkstra与Floyd算法
  7. linux less命令详解
  8. 刷题记录 CF每日一题打卡 2020.6月7-6月13
  9. python计算棋盘放米的故事_在棋盘上64个格子里放大米粒的故事
  10. 计算机光驱故障分析,光驱故障示例解决
  11. 电脑自动跳转加QQ好友html,自动添加QQ好友.html
  12. FLUKE OTDR光纤断点测试仪OFP2-100-Q特色功能及亮点分析
  13. 沉迷机器人操作系统的一个理由和四种修仙秘籍(更新ROS 2.0内容)
  14. isSelected() 的使用
  15. php+生成条形码18位,php实现在线生成条形码示例分享(条形码生成器)
  16. Sepic电路的参数计算及仿真
  17. 【Navicat】Navicat Premium12 下载、安装、激活、过期解决方法 —— 永久有效
  18. Bzoj4766 文艺计算姬
  19. antirez:Redis6真的来了
  20. android 智能家居 物联网 声纹开锁

热门文章

  1. 图像的zoomfft变换
  2. 彻底搞懂JavaScript执行机制
  3. 中缀转后缀表达式并求值
  4. php 下 html5 XHR2 + FormData + File API 上传文件
  5. Open-E DSS V7 应用系列之三 Web管理简介
  6. (NO.00003)iOS游戏简单的机器人投射游戏成形记(七)
  7. saltstack实战-6
  8. 华为机考回忆版(三:自己的)
  9. [MySQL优化案例]系列 -- OPTIMIZE的威力
  10. PAT甲级1052 Linked List Sorting:[C++题解]链表排序