Core List
1. public 继承塑模is-a关系
结论:每一个类型为D的对象同时也是一个类型为B的对象,反之不成立。
2. 企鹅会飞问题
(1) 区分会飞与不会飞的鸟
class Bird {}; // 没有声明fly函数
class FlyBird : public Bird { // 会飞的鸟,声明fly函数
public:
virtual void fly();
};
class Penguin : public Bird {}; // 企鹅,不声明fly函数
(2) 运行期报错
class Penguin : public Bird {
public:
virtual void fly() { error(" Attempt to make a penguin fly !"); };
};
(3) 编译器报错
class Penguin : public Bird {}; // 没有声明fly函数
Penguin p;
p.fly(); // 因为Penguin没有声明fly函数,因此编译时报错。