抽象类与纯虚函数
1. 抽象类
类太抽象以至于无法实例化就叫做抽象类(描述是不是绝了,类越往下派生肯定越具体,越往上肯定越抽象)
2. 抽象函数/纯虚函数
2.1. 成员函数应出现在哪个继承层次?
问题:Shape类层次中,getArea()函数放在哪个层次
选择1:放哪儿都行:Shape中或子类中定义getArea()
选择2:强制要求Shape子类必须实现getArea()
2.2. 抽象函数(abstract functions)要求子类实现它
virtual double getArea() = 0; // 在Shape类中
Circle子类必须实现getArea()纯虚函数才能实例化
2.3. 包含抽象函数的类被称为抽象类
抽象类不能实例化(创建对象)
3. Abstract Class Example
动态类型转换
1. 为何需要动态类型转换