C++ 的继承与虚函数 读书笔记
1、类与类之间可能会存在共性。
2、类与类之间必定会有差异。
3、为也节约开发时间和代码量,我们在设计类时可以把类的共享抽象出来形成一个基础类(基类)。
4、使用基类+差异生成一个新的类的叫派生类
1、在设计一个类时如果已有的类中有它需要的成员,它可以从已有的类中继承哪些成员,被继承的类叫父类或基类,继承类叫作派生类或子类。
class 类名 : 继承方式 基类1,继承方式 基类2,...
{
3、在设计类时如何形成继承的关系?
类的设计:
a、根据问题找对象
b、把对象中我们需要的属性和行为抽象出来
c、把抽象出的结果记录在一个class中形成一个类
d、把class类实例化构造对象
e、对象调用成员函数解决问题
继承就是在对对象抽象的结果进行归纳总结,找出它们的共享形成基类,再把基类+差异派生出子类。
子类在继承父类后可以节约大量的代码、节省开发时间、缩短开发周。
a、继承会提高类与类之间的耦合度
b、会降低代码的安全性和可维护性
1、继承虽然可以获取父类中的所有成员,但子类中可以隐藏父类中的同名成员。
2、父子类中的函数不可以形成重载,只有在同一个作用域下的同名不同参、const属性的函数才能开成重载。
3、父类中的成员在子类的访问属性。
父类中的 public 在子类中 可以访问
父类中的 protected 在子类中 可以访问
父类中的 private 在子类中 不可以访问
不同的继承方式会影响父类成员变量成子类成员后它们的访问属性,也就是继承来的成员在类外的访问属性。
public 不变
protected 公有变保护,其它不变
private 全部变成私有的
1、子类中会隐藏父类中的同名函数,这种关系叫作隐藏。
2、在同一作用域下的同名函数,这种关系叫作重载。
3、如果父类中的函数添加 virtual 关键字,这种函数就叫作虚函数,子类中会覆盖父类同名的虚函数。
4、虚函数是实现多态的基础。
1、在继承时先调用父类的构造函数,再调用子类的构造函数
2、在继承中先调用子类的析构,再调用父类的析构。
3、在调用拷贝构造时会先调用父类的拷贝构造,再调用子类的拷贝构造。
4、在C++中继承可以有多个父类,在构行时会按继承的顺序调用父类的构造函数。
5、在析构时子类会先调用自己的析构函数,然后按照继承表的逆序调用析构函数。
C++ 的继承与虚函数 读书笔记的更多相关文章
- 从零开始学C++之虚继承和虚函数对C++对象内存模型造成的影响
首先重新回顾一下关于类/对象大小的计算原则: 类大小计算遵循结构体对齐原则 第一个数据成员放在offset为0的位置 其它成员对齐至min(sizeof(member),#pragma pack(n) ...
- c++虚继承与虚函数
学习继承与多态时看到这两个概念,记录整理. 虚继承与虚函数都是用virtual关键字实现,虚继承为了防止多重继承,而虚函数为了实现多态. 是几个例子. 虚继承: class A{}; class B: ...
- C++多重继承分析——《虚继承实现原理(虚继承和虚函数)》
博客转载:https://blog.csdn.net/longlovefilm/article/details/80558879 一.虚继承和虚函数概念区分 虚继承和虚函数是完全无相关的两个概念. 虚 ...
- C++学习笔记(十二):类继承、虚函数、纯虚函数、抽象类和嵌套类
类继承 在C++类继承中,一个派生类可以从一个基类派生,也可以从多个基类派生. 从一个基类派生的继承称为单继承:从多个基类派生的继承称为多继承. //单继承的定义 class B:public A { ...
- C++学习 之 类的继承中的虚函数(笔记)
1.多态行为 多态是面向对象语言的一种特征,让我们能够以类似的方式处理不同类型的对象.在C++中我们可以通过继承层次结构实现子类型多态. 我们可以通过下面的代码进一步了解多态: #include< ...
- C++ Pirmer : 第十五章 : 面向对象程序设计之基类和派生的定义、类型转换与继承与虚函数
基类和派生类的定义以及虚函数 基类Quote的定义: classs Quote { public: Quote() = default; Quote(cosnt std::string& bo ...
- C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
1.虚函数(impure virtual) C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现. 子类可以重写父类的虚函数实现子类的特殊化. 如下就是一个父类中的 ...
- C++中的继承与虚函数各种概念
虚继承与一般继承 虚继承和一般的继承不同,一般的继承,在目前大多数的C++编译器实现的对象模型中,派生类对象会直接包含基类对象的字段.而虚继承的情况,派生类对象不会直接包含基类对象的字段,而是通过一个 ...
- C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数
继承是一种耦合度很强的关系 和父类代码很多都重复的 2 继承的概念 3 继承的概念和推演 语法: class 派生类:访问修饰符 基类 代码: … … 4 继承方式与访问控制权限 相对的说法: 爹派生 ...
随机推荐
- java.lang.ArithmeticException: Rounding necessary
这个错误就是精度丢失问题 https://blog.csdn.net/qq496013218/article/details/70792655
- springboot-11-servlet, listener, fitlter的添加
springboot中添加servlet, filter, listener有2种方式: 代码注册servlet 和自动注解注册(在使用druid监控有使用过) 代码注册通过ServletRegist ...
- C#语法之委托和事件
从大学就开始做C#这块,也做C#几年了,最近又从ios转回.Net,继续做C#,之前也没有写博客的习惯,写博客也是从我做ios的时候开始的,现在既然又做回了.net,那就写点关于.Net的博客,可能在 ...
- Python中类的属性的访问控制
因为自己是做.NET的,之前有学习过Python,喜欢这门语言的很多特性,最近又不时看了一会儿,将自己的感受分享给大家,其中也难免会用C#的角度看Python的语法,主要还是讲下Python中类中对属 ...
- 线程5--GCD简介
/******************************************************/ 同步函数 (1)并发队列:不会开线程 (2)串行队列:不会开线程 异步函数 ...
- CodeForces765B
B. Code obfuscation time limit per test:2 seconds memory limit per test:512 megabytes input:standard ...
- Servlet自动注入Spring容器中的Bean解决方法
很多情况在进行Web开发的时候需要自己手写Servlet来完成某些功能,而servlet有需要注入Spring容器中的某些bean,这是每次都要手动获取比较麻烦,这里有一个解决方案,只需要写一个ser ...
- BZOJ3238: [Ahoi2013]差异(后缀自动机)
题意 题目链接 Sol 前面的可以直接算 然后原串翻转过来,这时候变成了求任意两个前缀的最长公共后缀,显然这个值应该是\(len[lca]\),求出\(siz\)乱搞一下 #include<bi ...
- js设置光标插入文字和HTML
原文链接:js设置光标插入文字和HTML 在一个textarea的某个光标位置插入文字或者在某个编辑器中插入图片html内容,我最近经常和这些打交道,但总是一团模糊,今天整理一下关于如何插入文字,设置 ...
- vue项目中引入bootstrap
(1)引入Jquery文件,需要在bootstrap.min.js 之前引入. 1.npm install jquery --save-dev 2. plugins: [ new webpack.Pr ...