15.4节练习

来源:互联网 发布:房地产网络推广 编辑:程序博客网 时间:2024/06/05 04:14

练习15.15 定义你自己的Disc_quote和Bulk_quote。

class Disc_quote :public Quote {public:Disc_quote() = default;Disc_quote(const std::string &book, double price, std::size_t qty, double disc) :Quote(book, price), quantity(qty), discount(disc) {}double net_price(std::size_t) const = 0;protected:std::size_t quantity = 0;double discount = 0.0;};class Bulk_Quote :public Disc_quote {public:Bulk_Quote() = default;Bulk_Quote(const std::string &book, double price, std::size_t qty, double disc) :Disc_quote(book, price, qty, disc) {}double net_price(std::size_t) const override;};double Bulk_Quote::net_price(size_t cnt)const{if (cnt > quantity) {return cnt*quantity*(1 - discount);}else {return cnt*quantity;}}

练习15.16 改写你在15.2.2节(533页)练习中编写的数量受限的折扣策略,令其继承Disc_quote。

class Bulk_Quote2 :public Disc_quote {Bulk_Quote2() = default;Bulk_Quote2(const std::string &book, double price, std::size_t qty, double disc) :Disc_quote(book, price, qty, disc) {}double net_price(std::size_t) const override;};double Bulk_Quote2::net_price(size_t cnt)const{if (cnt > quantity) {return quantity*price*(1 - discount) + (cnt - quantity)*price;}else {return cnt*price;}}

练习15.17 尝试定义一个Disc_quote的对象,看看编译器会给出的错误信息是什么?

在VS2015中,给出的错误信息如下:
不能实例化抽象类,不允许使用抽象类型“Disc_quote”的对象。


0 0
原创粉丝点击