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函数,因此编译时报错。
本文深入探讨了面向对象编程中继承与虚拟函数的概念,通过企鹅是否会飞的问题,解释了类之间的is-a关系以及如何在运行时处理未定义的行为。文章详细分析了不同情况下编译器和运行时的反应,提供了理解类继承和虚拟函数的实用案例。

被折叠的 条评论
为什么被折叠?



