使用继承可以定义相似的类型并对其相似关系建模.
- class Quote {
- public:
- std::string isbn() const;
- virtual double net_price(std::size_t n) const;
- };
- class Bulk : public Quote {
- public:
- double net_price(std::size_t n) const override;
- };
- View Code
虚函数: 通过 virtual 生命基类中希望派生类定义适合自身的版本, 则用 virtual 来声明基类的函数, 在派生类中对应函数的形参列表后面添加 override 关键字.
动态绑定: 使用同一段代码, 对具有一定区别的相似类型以统一的方式进行处理.
- double print_total(ostream& os, const Quote& item, size_t n)
- {
- double ret = item.net_price(n);
- os << "ISBN:" << item.isbn() << "# sold:" << n << "total due:" << ret << endl;
- return ret;
- }
- View Code
调用方法:
- print_total(cout, basic, 20);//basic 表示基类的函数的调用
- print_total(cout, bulk, 20);//bulk 表示派生类函数的调用
- View Code
来源: http://www.bubuko.com/infodetail-3162493.html