首页 > 代码库 > 派生类的例子
派生类的例子
15.7定义一个类使其实现一种数量受限的折扣策略,具体策略是:当购买书籍的数量不超过一个给定的限量时享受折扣,如果购买量一旦超过了限量,则超出的部分将以原价销售。
Quote.h
#ifndef QUOTE_H#define QUOTE_H#include<iostream>#include<string>using namespace std;class Quote{public: Quote()=default; Quote(const string &book,double sales_price):bookNo(book),price(sales_price) {} string isbn() const {return bookNo;} virtual double net_price(size_t n) const { return n*price;} virtual ~Quote()=default;private: string bookNo;protected: double price=0.0;};class Bulk_quote:public Quote{public: Bulk_quote()=default; Bulk_quote(const string &, double , size_t , double ); double net_price(size_t) const override;private: size_t min_qty=0; double discount=0.0;};#endif // QUOTE_H
Quote.cpp
#include"Quote.h"Bulk_quote::Bulk_quote(const string &book, double p, size_t qty, double disc):Quote(book,p),min_qty(qty),discount(disc) {}double Bulk_quote::net_price(size_t cnt) const{ if(cnt<=min_qty) return cnt*(1-discount)*price; else return (cnt-min_qty)*price+min_qty*(1-discount)*price;}
main.cpp
#include <iostream>#include"Quote.h"using namespace std;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;}int main(){ Quote quote("Base",2); Bulk_quote bulk("devired",2,5,0.5); print_total(cout,quote,6); print_total(cout,bulk,6); return 0;}
派生类的例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。