一、类与类之间关系:
 1、类与类之间可能会存在共性。
 2、类与类之间必定会有差异。
 3、为也节约开发时间和代码量,我们在设计类时可以把类的共享抽象出来形成一个基础类(基类)。
 4、使用基类+差异生成一个新的类的叫派生类
二、继承的语法
 1、在设计一个类时如果已有的类中有它需要的成员,它可以从已有的类中继承哪些成员,被继承的类叫父类或基类,继承类叫作派生类或子类。
 class 类名 : 继承方式 基类1,继承方式 基类2,...
 {
 }
 2、子类会完全继承父类中的所有成员(包括哪些能访问的和不能访问的)。
 
 3、在设计类时如何形成继承的关系?
  类的设计:
   a、根据问题找对象
   b、把对象中我们需要的属性和行为抽象出来
   c、把抽象出的结果记录在一个class中形成一个类
   d、把class类实例化构造对象
   e、对象调用成员函数解决问题
  继承就是在对对象抽象的结果进行归纳总结,找出它们的共享形成基类,再把基类+差异派生出子类。
 4、继承的优点:代码复用。
  子类在继承父类后可以节约大量的代码、节省开发时间、缩短开发周。
 5、继承的缺点:
  a、继承会提高类与类之间的耦合度
  b、会降低代码的安全性和可维护性
三、使用继承要注意的问题
 1、继承虽然可以获取父类中的所有成员,但子类中可以隐藏父类中的同名成员。
 2、父子类中的函数不可以形成重载,只有在同一个作用域下的同名不同参、const属性的函数才能开成重载。
 3、父类中的成员在子类的访问属性。
  父类中的 public 在子类中 可以访问
  父类中的 protected 在子类中 可以访问
  父类中的 private 在子类中 不可以访问
 4、继承的方式
  不同的继承方式会影响父类成员变量成子类成员后它们的访问属性,也就是继承来的成员在类外的访问属性。
  public 不变
  protected 公有变保护,其它不变
  private 全部变成私有的
五、虚函数
 1、子类中会隐藏父类中的同名函数,这种关系叫作隐藏。
 2、在同一作用域下的同名函数,这种关系叫作重载。
 3、如果父类中的函数添加 virtual 关键字,这种函数就叫作虚函数,子类中会覆盖父类同名的虚函数。
 4、虚函数是实现多态的基础。
六、继承的构造、析构、拷贝
 1、在继承时先调用父类的构造函数,再调用子类的构造函数
 2、在继承中先调用子类的析构,再调用父类的析构。
 3、在调用拷贝构造时会先调用父类的拷贝构造,再调用子类的拷贝构造。
 4、在C++中继承可以有多个父类,在构行时会按继承的顺序调用父类的构造函数。
 5、在析构时子类会先调用自己的析构函数,然后按照继承表的逆序调用析构函数。

C++ 的继承与虚函数 读书笔记的更多相关文章

  1. 从零开始学C++之虚继承和虚函数对C++对象内存模型造成的影响

    首先重新回顾一下关于类/对象大小的计算原则: 类大小计算遵循结构体对齐原则 第一个数据成员放在offset为0的位置 其它成员对齐至min(sizeof(member),#pragma pack(n) ...

  2. c++虚继承与虚函数

    学习继承与多态时看到这两个概念,记录整理. 虚继承与虚函数都是用virtual关键字实现,虚继承为了防止多重继承,而虚函数为了实现多态. 是几个例子. 虚继承: class A{}; class B: ...

  3. C++多重继承分析——《虚继承实现原理(虚继承和虚函数)》

    博客转载:https://blog.csdn.net/longlovefilm/article/details/80558879 一.虚继承和虚函数概念区分 虚继承和虚函数是完全无相关的两个概念. 虚 ...

  4. C++学习笔记(十二):类继承、虚函数、纯虚函数、抽象类和嵌套类

    类继承 在C++类继承中,一个派生类可以从一个基类派生,也可以从多个基类派生. 从一个基类派生的继承称为单继承:从多个基类派生的继承称为多继承. //单继承的定义 class B:public A { ...

  5. C++学习 之 类的继承中的虚函数(笔记)

    1.多态行为 多态是面向对象语言的一种特征,让我们能够以类似的方式处理不同类型的对象.在C++中我们可以通过继承层次结构实现子类型多态. 我们可以通过下面的代码进一步了解多态: #include< ...

  6. C++ Pirmer : 第十五章 : 面向对象程序设计之基类和派生的定义、类型转换与继承与虚函数

    基类和派生类的定义以及虚函数 基类Quote的定义: classs Quote { public: Quote() = default; Quote(cosnt std::string& bo ...

  7. C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别

    1.虚函数(impure virtual) C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现. 子类可以重写父类的虚函数实现子类的特殊化. 如下就是一个父类中的 ...

  8. C++中的继承与虚函数各种概念

    虚继承与一般继承 虚继承和一般的继承不同,一般的继承,在目前大多数的C++编译器实现的对象模型中,派生类对象会直接包含基类对象的字段.而虚继承的情况,派生类对象不会直接包含基类对象的字段,而是通过一个 ...

  9. C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数

    继承是一种耦合度很强的关系 和父类代码很多都重复的 2 继承的概念 3 继承的概念和推演 语法: class 派生类:访问修饰符 基类 代码: … … 4 继承方式与访问控制权限 相对的说法: 爹派生 ...

随机推荐

  1. Windows下如何正确下载并安装可视化的Redis数据库管理工具(redis-desktop-manager)(图文详解)

    不多说,直接上干货! Redis Desktop Manager是一个可视化的Redis数据库管理工具,使用非常简单.       官网下载:https://redisdesktop.com/down ...

  2. kubernetes ingress到pod的数据流

    假设现在有一个ingress暴露的服务 example.com.cn,查看一下流量是怎么传输到后端的 使用kubectl get ingress可以查看到如下内容,example.com.cn对应的i ...

  3. 机器学习-KNN算法

    原理 KNN算法,又叫K近邻算法.就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是 ...

  4. LogStash启动报错:<Redis::CommandError: ERR unknown command 'script'>与batch_count 的 配置

    环境条件: 系统版本:centos 6.8 logstash版本:6.3.2 redis版本:2.4 logstash  input配置: input { redis { host => &qu ...

  5. 面试题6:二叉树最近公共节点(LCA)《leetcode236》

    Lowest Common Ancestor of a Binary Tree(二叉树的最近公共父亲节点) Given a binary tree, find the lowest common an ...

  6. [转]WebForm中使用MVC

    本文转自:https://www.cnblogs.com/encoding/articles/3556046.html 前言 掐指一算,3年没写博了,好懒的说... 众所周知,MVC现在越来越火了,不 ...

  7. js中的深浅拷贝

    js中的深浅拷贝 js中有深拷贝.浅拷贝一说,所谓的深浅拷贝是针对value类型为引用类型(函数.对象.数组)而言的,大概理解的就是: 浅拷贝: 拷贝出的对象c和原始对象o,c和o在key对应的val ...

  8. java 全自动生成Excel之ExcelUtil篇(上一篇的升级版 [针对实体类对象的遍历赋值])

    看了上一篇随笔之后可以对本篇有更好的了解! 使用的poi的jar包依然是上一篇的poi-3.17.jar.... import pojo.UserPojo(上一篇里有,这里就不粘贴了!) 不废话了,直 ...

  9. C# 实现寻峰算法的简单优化(包含边峰,最小峰值,峰距)

      核心寻峰算法的原理参考Ronny,链接:投影曲线的波峰查找, C#翻译原理代码参考sowhat4999,链接:C#翻译Matlab中findpeaks方法 前人种树,后人乘凉.感谢原作者详细的解释 ...

  10. JVM进程状态监控

    前言 ========== 为什么需要做服务器jvm自动发现的监控呢?这个事情主要有两点原因: 1.zabbix默认监控jvm状态是使用jmx中转进行监控的,监控效率比较低下 2.zabbix使用jm ...