【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个主要特点:抽象.封装.继承和多态性.说了类和对象,了解了面向对象程序设计的两个重要特征一数据抽象与封装,已经能够设计出基于对象的程序,这是面向对象程序设计的基础. 要 ...
随机推荐
- Pandas 使用笔记
创建空的数据框: import pandas as pd df = pd.DataFrame(columns = ["ebayno", "p_sku", &qu ...
- centos7下使用mysql离线安装包安装mysql5.7
服务器环境: centos7 x64 需要安装mysql5.7+ 一.卸载CentOS7系统自带mariadb # 查看系统自带的Mariadb [root@CDH-141 ~]# rpm -qa|g ...
- 【.NET 深呼吸】.net core 中的轻量级 Composition
记得前面老周写过在.net core 中使用 Composition 的烂文.上回老周给大伙伴们介绍的是一个“重量级”版本—— System.ComponentModel.Composition.应该 ...
- yarn 切换 设置 镜像 源
1.查看一下当前源 yarn config get registry 2.切换为淘宝源 yarn config set registry https://registry.npm.taobao.org ...
- TFS online build change web.config
概要 TFS online 自动编译时如何修改web.config ref:https://dustinoprea.com/2016/05/06/using-tokenization-token-re ...
- NOIP2011普及组 瑞士轮
OJ地址: https://www.luogu.org/problemnew/show/P1309 http://bailian.openjudge.cn/practice/4031/ 总时间限制: ...
- Docker在windows下的使用【一】
1.windows按照docker的基本要求 (1)64为操作系统,win7或者更高 (2)支持“ Hardware Virtualization Technology”,并且,“virtualiza ...
- sql 有条件计数
select InstitutionID=LEFT(InstitutionID,9), Irregularities_Type=sum(CASE WHEN Irregularities_Type> ...
- Couldn't find log associated with operation handle: OperationHandle [opType=EXECUTE_STATEMENT, getHandleIdentifier ()=5687ff62-aa71-4b47-af6c-89f6a3f7a1fe]
这个异常的出现是因为hive-site-xml中的hive.server2.logging.operation.log.location属性未配置正确: 修改为: <property> & ...
- oracle查看某表字段类型
来源:https://www.cnblogs.com/ufindme/p/5033843.html 今天遇到一个问题:要求在可重复执行的SQL脚本添加一段SQL代码:修改当前的数据类型.因为SQL代码 ...