《C++ Primer Plus(第六版)》(25)(第十三章 类继承 笔记)
1.派生类构造函数的要点:
首先创建基类对象;
应通过成员初始化列表将基类的初始化信息传递给基类的构造函数;
派生类构造函数应初始化新增的数据成员
2.首先执行派生类的析构函数,然后自动调用基类的析构函数.
3.基类指针可以在不进行显式类型转换的情况下指向派生类对象,基类引用可以在不进行显式类型转换的情况下引用派生类对象.
4.C++有三种继承方式,共有继承,私有继承和保护继承
5.带有virtual的方法,在调用的时候,将调用指针或者引用所指向的具体对象的类的方法.
基类声明中如果析构函数为虚,可以确保释放派生类的时候,按照正确的顺序来调用析构函数.
6.在编译过程中进行的联编称为静态联编,或早期联编。编译器对非虚方法使用静态联编。
程序运行时选择正确的虚函数的代码,被称为动态联编,又称为晚期联编。
静态联编效率高,是默认的联编方式。
如果需要在派生类中重新定义基类的方法,则将它设置为虚方法,否则是非虚的。
C++中,基类有虚函数表,声明派生类的时候,如果重载了基类的虚函数,则会替换掉虚函数表中该函数的地址。
7.构造函数被声明为虚是没有意义的。
析构函数应当是虚函数。
8.在子类中,重新定义函数,并不会形成重载,而是屏蔽掉父类的同名方法。
想要重载父类方法,函数的特征标应该完全相同,但是如果返回的是父类的引用或指针,则可以改成子类的引用或指针。这被称为返回类型协变(covariance of return type)
如果父类中有多个同名函数,而子类只重载了一个,则剩下的函数版本会被屏蔽掉。子类只能使用重载的那个函数。
9.包含纯虚函数的类,只能作为基类使用。
抽象基类(abstract base class, ABC)抽象基类
纯虚函数,仍然可以提供函数的实现。声明了=0,只是表示可以不定义,而不是不能定义。
转载于:https://www.cnblogs.com/fablegame/p/6430239.html
《C++ Primer Plus(第六版)》(25)(第十三章 类继承 笔记)相关推荐
- C++ primer Plus(第六版)第十三章 类继承 章节编程练习答案
1.以下面的类声明为基础: 派生出一个Classic类,并添加一组char成员,用于存储指出CD中主要作品的字符串.修改上述声明,使基类的所有函数都是虚的.如果上述定义声明的某个方法并不需要,则请删除 ...
- C primer plus(第六版)第十一章源代码
C primer plus(第六版)第十一章源代码 /* 11.1 */ #include<stdio.h> #define MSG "I am a symbolic strin ...
- 【C++ Primer】第十三章 类继承
一,类继承 定义:从已有的类派生出新的类,而派生类继承了原有类的特征,包括方法. 目标:提供可重用的代码 二,一个简单的基类 #include <iostream ...
- C++ Primer Plus(第六版)第12章 类和动态内存分配
严重性代码说明项目文件行禁止显示状态 错误 C4996 'strcpy': This function or variable may be unsafe. Consider using ...
- C primer plus(第六版)第五章源代码
第五章 /* 5.1 */ #include<stdio.h> #define ADJUST 7.31 int main(void) {const double SCALE = 0.333 ...
- C Primer Plus (第六版) 第十四章_编程练习答案
no1.c //重新编写复习题5,用月份名的拼写代替月份号(别忘了用strcmp()).在一个简单的程序中测试该函数 # include <stdio.h> # include <s ...
- C++ Primer Plus 第六版(中文版)第十一章(重置版)编程练习答案
//本章程序需分多文件运行,请读者注意; //本博主所写的代码仅为阅读者提供参考; //若有不足之处请提出,博主会尽所能修改; //附上课后编程练习题目; //若是对您有用的话请点赞或分享提供给它人; ...
- c++primer plus第六版第十二章第一题
//h文件 #pragma once class cow {char name[20];char*hobby;double weight; public:cow();cow(const char*m, ...
- C Primer Plus第六版(中文版)编程练习答案(完美修订版)汇总
//本文是博主编写的C Primer Plus第六版(中文版)编程练习答案的所有链接; //使用超链接汇总于此,若是有用请点赞收藏并分享给他人; C Primer Plus 第六版(中文版)第二章(完 ...
最新文章
- 反弹模型(bounce model)----adot, H, Hdot变化图
- 【字符串】大小写的转换
- the virtual machine is configured for 64-bit guest operating systems
- 【数据库系统】模式图实例
- 2019.01.24 NOIP训练 旅行(轮廓线dp)
- gnuplot画图命令_Gnuplot科学绘图(二十六)——image 绘图
- 超文本标记语言HTML
- java与sql心得体会_学习心得
- 前端开发框架整理(一些记录给自己看的)
- Theme相关:button的效果不显示
- java中的锁池和等待池
- Quartz的时间配置
- 哇撒!这几个SpringBoot前后端分离项目(附源码),star过千,快去收藏夹吃灰吧。。。
- [抽奖系统下载]多进程现场抽奖展示系统V2-双屏PPT版-专业抽奖展示工具-具有强劲引擎的抽奖系统-PPT双屏技术深度应用,国内唯一
- C#50个经典小程序代码
- Flash 第二篇 AS影片剪辑
- link标签的用法及link属性大全
- 量化投资学习——一份高频因子的研报综述
- 人脸识别-----Olivetti Faces人脸数据集合处理
- VS2019 Xamarin 零基础开发一个简单的App实例
热门文章
- 锤子剪刀布pat-1018
- jQuery异步加载数据并添加事件示例
- ActiveMQ入门实例
- 使用maven引入Apache poi jar包
- data-role参数表:
- 重新理解javascript回调函数
- java8 入门脚本之家_Java 8中的Lambda表达式
- Asp.Net微信发布菜单,出现“invalid sub button url domain hint”错误
- bootstrapselect使用 Bootstrap's dropdowns require Popper.js
- word 2010中正文页码如何从第1页开始?