抽象基类-纯虚函数

抽象基类

纯虚函数

//用于保存折扣值和购买量的类,派生类使用这些数据可以实现不同的价格策略
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;  //表示折扣的小数值
};

含有纯虚函数的类是抽象基类

//Disc_quote声明了纯虚函数,而Bulk_quote将覆盖该函数
Disc_quote discounted;  //错误:不能定义Disc_quote的对象
Bulk_quote bulk;    //正确:Bulk_quote中没有纯虚函数

派生类构造函数只初始化它的直接基类

//当同一书籍的销售量超过某个值时启用折扣
//折扣的值是一个小于1的正的小数值,以此来降低正常销售价格
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;
};

你可能感兴趣的:(java,算法,开发语言)