第十五章 面向对象程序设计
15.1 OOP:概述
1. 面向对象的的核心思想是数据抽象、继承和动态绑定
通过使用数据抽象将类的接口与实现分离。
使用继承,定义相似类型并对其相似关系建模。
使用动态绑定,在一定程度上忽略相似类型的区别,以统一的方式使用它们的对象。
2. 继承的写法:类派生列表
3. 虚函数的写法
函数返回值类型前加上virtual修饰符
15.2 定义基类和派生类
1. 虚函数的解析过程发生在运行时
虚函数存在动态绑定,需要在运行时才能确定执行该函数的对象到底是基类还是派生类。
而其它函数在编译时就可以解析
2. 如果派生类没有覆盖它继承的虚函数,则派生类会直接继承其在基类中的版本
3. 派生类对象向基类的类型转换
上图中,Bulk_quote继承自Quote。Bulk_quuote中既有基类的成员,也有自己新定义的成员。
派生类到基类的类型转换:
我们能把派生类对象当成基类对象来使用。(儿子继承了父亲的能力,父亲能做的儿子也能做)
我们也能将基类的指针或引用绑定到派生类对象中的基类部分(指针类型是基类指针,但是它指向的实际是派生类)
5. 各自初始化
初始化时,派生类构造函数通过构造函数初始化列表将实参传递给基类构造函数,构造自己的基类部分
首先应该初始化基类部分,然后按照声明的顺序依次初始化派生类的成员