【C++ 继承与派生/知识梳理】
- 为什么引入继承派生
- 代码重用扩充
- 软件的复用
- 层次分类
- 派生类的语法定义
- class 派生类名(1):继承方式(2) 基类名(3){
派生成员声明;}
*(1)一个派生类——>多个基类,多继承。 只有一个基类,单继承。
(2)继承方式:关键字3个:public, protected,private
public: 公有成员和保护成员访问属性在派生类中不变,同:基类的私有成员不能直接访问。
protected: 公有成员和保护成员访问属性在派生类变成保护成员。同:基类的私有成员不能直接访问。
private: 基类中的公有成员和保护成员都成了派生类的私有成员,同:基类的私有成员不能直接访问。(作用:中止基类继续派生,qustion:1.基类的公共成员还能不能被对象访问?2.私有成员和保护成员有什么区别?//私有成员不能被继承,也不能被外部函数访问,保护可以被继承,但是外部函数不能访问,派生类的对象可以直接访问保护函数,基类对象不能直接访问)
- 访问与标识
(1) 当派生类与基类有同名成员时: 若未明确指出,则通过派生类对象使用的是派生类中的同名成员(同名覆盖原则)若要通过派生类对象访问基类中被覆盖的同名成员,应使用基类名及作用域分辨符限定
(2) 多个基类存在同名成员时,如果通过派生类对象访问存在二义性,也应使用基类名及作用域分辨符限定
- 派生类的构造函数
- 语法:
派生类名::派生类名(所有形参) : 基类名1(基类1形参), … 基类名n(基类n形参), 内嵌对象名1(内嵌对象1形参), … { 派生类新增成员的初始化; }
- 调用顺序
1.首先,调用基类构造函数。 多个基类之间,按照它们被继承时声明的顺序 2.其次,调用内嵌对象的构造函数。多个内嵌对象之间,按照它们在类中声明的顺序. 3 最后,调用派生类的构造函数。
- 语法:
- 解析函数
当派生类对象的生命期结束时: 编译器会自动调用派生类的析构函数和基类的析构函数 析构函数的调用顺序与构造函数相反
- 复制构造函数
- 类型兼容规则
- 类型兼容原则
一个公有派生类的对象在使用上可以被当作基类的对象,反之,不可以。
- 虚基表
① 主要用来解决多重继承时可能发生的对同一基类继承多次而产生的二义性问题 ② 为派生类提供唯一的基类成员,而不重复产生多次拷贝

定义
class Base1:virtual public Base0 { public: int var1; void fun1(); };
- 在第一级继承时就要将共同基类设计为虚基类

【C++ 继承与派生/知识梳理】的更多相关文章
- C/C++基础知识总结——继承与派生
1. 类的继承与派生 1.1 派生类的定义 (1) 定义规范 class 派生类名: 继承方式 基类1名, 继承方式 基类2名... { ...派生类成员声明; }; (2) 从以上形式上看可以多继承 ...
- C/C++编程笔记:C++入门知识丨继承和派生
本篇要学习的内容和知识结构概览 继承和派生的概念 派生 通过特殊化已有的类来建立新类的过程, 叫做”类的派生”, 原有的类叫做”基类”, 新建立的类叫做”派生类”. 从类的成员角度看, 派生类自动地将 ...
- solr DIH 知识梳理
solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...
- [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型
引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...
- 程序设计实习MOOC / 继承和派生——编程作业 第五周程序填空题1
描述 写一个MyString 类,使得下面程序的输出结果是: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8 ...
- C#基础知识梳理索引
C#基础知识梳理索引 一 引子 之前曾写了一篇随笔<.NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标> 三个月过去了,目标使更多的编程初学者,轻松高效地掌握C#开发的基础,重 ...
- Linux基础知识梳理
Linux基础知识梳理 Linux内核最初只是由芬兰人林纳斯?托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的.Linux是一套免费使用和自由传播的类Unix操作系统,是 ...
- 【C++ 实验六 继承与派生】
实验内容 1. 某计算机硬件系统,为了实现特定的功能,在某个子模块设计了 ABC 三款芯片用于 数字计算.各个芯片的计算功能如下: A 芯片:计算两位整数的加法(m+n).计算两位整数的减法(m-n) ...
- C++复习:继承与派生
1继承概念 面向对象程序设计有4个主要特点:抽象.封装.继承和多态性.说了类和对象,了解了面向对象程序设计的两个重要特征一数据抽象与封装,已经能够设计出基于对象的程序,这是面向对象程序设计的基础. 要 ...
随机推荐
- MediaInfo代码阅读
MediaInfo是一个用来分析媒体文件的开源工具. 支持的文件非常全面,基本上支持所有的媒体文件. 最近是在做HEVC开发,所以比较关注MediaInfo中关于HEVC的分析与处理. 从Meid ...
- 对Android中的堆栈的理解(Stack)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Ln_ZooFa/article/details/50337529 堆栈空间分配 栈(操作系统): ...
- 用GO开发企业级分布式云存储系统
一.基础架构 二.开发工具
- python接口自动化测试(一)-环境准备
接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对性的进行选择,甚至当 ...
- TableView 无数据时展示占位视图
UITableView+NoDataView.m #import "UITableView+NoDataView.h" #import "NoDataView.h&quo ...
- phpexcel 导入超过26列、处理时间格式
见地址:http://www.thinkphp.cn/topic/33376.html excel处理时间: https://blog.csdn.net/xqd890608/article/detai ...
- lua 源码分析之线程对象lua_State
lua_State 中放的是 lua 虚拟机中的环境表.注册表.运行堆栈.虚拟机的上下文等数据. 从一个主线程(特指 lua 虚拟机中的线程,即 coroutine)中创建出来的新的 lua_Stat ...
- 在chrome Sources 页 显示 Console(drawer) 页
- C++ thread类多线程编程
https://blog.csdn.net/dcrmg/article/details/53912941 多线程操作的thread类,简单多线程示例: #include <iostream> ...
- 关于Java 软件工程师应该知道或掌握的技术栈
鄙人星云,今天突然想写这么一篇需要持续更新的文章,主要目的用于总结当前最流行的技术和工具,方便自己也方便他人. 更新时间:2018-10-23 09:26:19 码农职业路径图 码农入门职业路径图 J ...