继承

继承:
可以理解为一个类从另一个类中获取成员变量和成员函数的过程. eg:B类继承于 A类, 那么B 就拥有 A 的成员变量和成员函数. 被继承的类称为父类或者基类, 继承的类称为子类或者派生类.

派生类除了拥有基类的成员, 还可以定义自己的成员函数和成员变量.

class 派生类名: [继承方式] 基类名 {
派生类的新成员;
};
// 继承承方式限定了基类成员在派生类中的访问权限,包括 public(公有的)、private(私有的)和 protected(受保护的)。此项是可选的,如果不写,默认为 private 或 protected。

(1) public 继承方式

  • 基类中所有public 成员在派生类中的属性为 public;
  • 基类中所有 protected 成员在派生类中的属性为 protected;
  • 基类中所有 private 成员在派生类中是不可访问的.

(2) protected 继承方式

  • 基类中所有的 public 成员在派生类中为 protected 属性;
  • 基类中所有的 protected 成员在派生类中为protected 属性;
  • 基类中所有的 private 成员在派生类中是不可访问的.

(3) private 继承方式

  • 基类中所有的 public 成员在派生类中都为 private 属性;
  • 基类中所有的 protected 成员在派生类中都为 private 属性;
  • 基类中所有的 private 成员在派生类中都是不可访问的.

基类的构造函数不能被派生类继承, 在声明派生类时, 对继承过来的成员变量的初始化工作也要由派生类的构造函数来完成. 所以在设计派生类的构造函数时, 不仅要考虑派生类新增的成员变量, 还要考虑基类的成员变量, 要让他们都被初始化.

解决这个问题的思路是:在执行派生类的构造函数时, 调用基类的构造函数.

事实上, 通过派生类创建对象时, 必须调用基类的构造函数.

当创建对象时, 会先调用基类的构造函数, 再调用派生类的构造函数.(自基类向派生类)

析构函数是不能被继承的.

析构函数的调用时与构造函数的调用顺序相反, 先调用派生类的析构函数, 再调用基类的析构函数.

多继承:
http://c.biancheng.net/cpp/biancheng/view/2986.html
这个例子很好的说明了:基类对象和派生类对象之间的赋值仅仅是对应的成员变量的赋值,不会影响成员函数,不会影响 this 指针。

virtual:
借助虚函数, 基类指针既可以调用基类的成员函数, 也可以使用派生类的成员函数, 它有多种形态, 或多种表现方式, 这就是多态.

多态是面向对象的主要特征, 在 c++中, 虚函数的唯一作用就是构成多态.

C++提供多态的目的是: 可以通过基类指针对所有派生类(包括直接派生类和简介派生类) 的成员变量和成员函数进行"全方位"的访问, 尤其是成员函数. 如果没有多态, 我们只能访问成员变量.

构成多态的条件:

  • 必须存在继承关系;
  • 继承关系中必须有同名的虚函数, 并且它们是覆盖关系 (重载不行).
  • 存在基类的指针, 通过改制这调用虚函数.

Note:

  • 派生类中的虚函数必须覆盖(不是重载)基类的虚函数, 才能通过基类指针访问.

有虚函数才能构成多态,

另外注意:

  1. virtual 关键字仅用于函数声明, 如果函数是在类外定义, 则不需要再加上 virtual 关键字.
  2. 为了方便, 你可以只将基类中的函数声明为虚函数, 所有派生类中具有覆盖关系的同名函数都将自动成为虚函数.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、继承和多态在面向对象编程中,继承(也称为派生)让您能够创建新类,而这些类继承了父类(也称为基类)的特征和行为。...
    CarlDonitz阅读 4,280评论 0 2
  • 继承和多态 1. 继承的优缺点 优点:(1)子类可以灵活地改变父类中的已有方法;(2)能够最大限度的实现代码重用。...
    MinoyJet阅读 3,868评论 0 0
  • C++ 基础 概念及工方式 保持已有类的特性而构造新类的过程称为继承。在已有类的基础上新增自己的特性而产生新类的过...
    I踏雪寻梅阅读 2,498评论 0 2
  • 《摔跤吧,爸爸》 看到好多朋友推荐这部电影,好奇心的我也看了下,阿米尔·汗是我很敬重的演员,我不是常看电影,但这位...
    百日跑者孙大剩阅读 2,905评论 7 8
  • 去年大热的台湾青春爱情电影《我的少女时代》,讲述了普通少女林真心与校草欧阳非凡、校霸徐太宇之间的青春恋爱故事,剧情...
    浮生如梦亦如书阅读 4,477评论 1 2