在书店的例子中,我们定义一个基类,命名为Item_base,表示未打折的书;第二个类继承Item_base,命名为Bulk_item,表示数量折扣销售的书。
这些类至少定义如下操作:
1,名为book的操作,返回ISBN
2, 名为net_price的操作,返回购买指定数量的书的价格。
Item_base的派生类将无须改变地继承book函数:派生类不需要重新定义获取ISBN的含义,另外一方面,每个派生类需要定义自己的net_price函数版本,以实现适当的折扣价格策略。
在C++中,基类必须指出希望派生类定义那些函数,定义为virtual的函数,都是基类期待的派生类,基类希望派生类继承的函数不能定义为虚函数。
通过讨论,可以定义三个函数:
非虚函数,std::string book(),返回ISBN,由Item_base定义,Bulk_item继承。
虚函数:double net_price(size_t)的两个版本,返回给定数据的某书的总价。