/* *
*
* 一. 用途
*
* 面向对象程序设计(OOP)的核心是数据抽象, 继承和动态绑定.
*
* 1. 数据抽象, 实现接口与实现分离
*
* 2. 继承, 用来定义相似的类型并对其相似关系建模.
*
* 3. 动态绑定, 忽略相似类之间的区别, 以统一的方式使用他们的对象
*
* 二. 定义
*
* 1. 数据抽象, 即接口和实现分离. 接口, 指类能执行的操作, 通常指公有函数的声明.
*
* 实, 现即数据成员, 公有函数的函数体, 以及定义类所需的各种私有函数.
*
* 2. 继承, 即以某一个类为基础, 产生各种不同的派生类, 这些类之间构成的层次关系就是继承.
*
* 基类, 位于层次关系的根部, 负责定义通用的接口与数据.
*
* 派生类, 间接或直接的地从基类继承而来, 负责定义特有的接口与数据.
*
* 虚函数, 可以在派生类中定义不同版本, 在运行时, 根据对象的类型, 动态选择调用对应的版本.
*
* 3. 动态绑定, 当使用基类的指针或引用调用一个虚函数时, 会调用该指针或引用实际指向对象的类型
*
* 中的对应版本.
*
* */
/* *
* 派生类的定义
* */
class Base
{
virtual int op1();
};
class Derived : public Base
{
/* *
* 派生类必须在类内部对所有重新定义的虚函数进行声明.
*
* virtual可加可不加.
*
* override用来显式地注明用来重写基类虚函数的成员函数.
* */
/*virtual */int op1() override;
}