C++11: inherited constructors

来源:互联网 发布:英国美国留学对比知乎 编辑:程序博客网 时间:2024/04/29 08:49
#include <string>#include <iostream>class Quote {public:        Quote() = default;        Quote(const std::string &book, double sales_price)           : bookNo(book), price(sales_price) {}        std::string isbn() const { return bookNo; }        virtual double net_price(std::size_t n) const {                return n * price;        }        virtual ~Quote() = default;private:        std::string bookNo;protected:        double price = 0.0;};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:        using Disc_quote::Disc_quote;        double net_price(std::size_t) const override;};double Bulk_quote::net_price(std::size_t cnt) const{        if (cnt >= quantity) {                return cnt * (1 - discount) * price;        } else {                return cnt * price;        }}int main(){        Bulk_quote bulk("758-333-33333", 50.2, 20, 0.05);        std::cout << bulk.net_price(10) << std::endl;        std::cout << bulk.net_price(30) << std::endl;        Bulk_quote bulk2;        return 0;}
// from C++ primer 5th(p.628)// g++ xx.cpp -std=c++11// gcc 4.9.2
0 0
原创粉丝点击