混迹于C++之基类和子类之虚继承(二)

摘自林锐《高质量程序设计指南》

一。类的可复用性还表现在派生类的函数来实现自己的函数,即使这些函数是虚函数。

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();               
                ...
 };



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值