摘自林锐《高质量程序设计指南》
一。类的可复用性还表现在派生类的函数来实现自己的函数,即使这些函数是虚函数。
class A{
public:
void Func1(void);
void Func2(void);
};
class B : public A{
void Func3(void){
A::Func1();//先调用基类的函数
... ... //自己实现的代码
}
void Func4(void);
... ... //自己实现的代码
A::Func2();//再调用基类的函数
};
main()
{
B b;
b.Func3();
b.Func4();
}
二。
男人是人的一种,男孩是男人的一种。
class Human{//Human是基类
...
};
class Man: public Human{//Man从Human的派生类
...
};
class Boy : public Man{//Boy是Man的派生类
...
};
三。虚继承(关键字virtual)
上面的规则看起来很简单,但是实际应用时会有意外,继承的概念在程序的世界里和现实世界中并不完全相同。
例如,从生物学角度讲,鸵鸟(Ostrich)是鸟(bird)的一种,按理说类Ostrich应该可以从类bird继承,但是鸵鸟不会飞。
虚函数的声明,是为了调用子类里的方法,而不是调用基类里的方法 .
class Bird{ public: virtual void Fly();//鸟能飞行 ... }; class Ostrich : public Bird{//鸵鸟是鸟的一种 public: virtual void Fly();
};...