抽象基类构造函数初探

来源:互联网 发布:韩子高网络剧优酷视频 编辑:程序博客网 时间:2024/06/06 16:41

抽象基类构造函数可以定义在类外么?
显然可以

#pragma once#include<string>using std::string;class Quote {public:    Quote() = default;    Quote(const string& s, double p);    string isbn()const { return bookNo; }    virtual double netPrice(size_t n) const { return n*price; }    virtual ~Quote() = default;private:    string bookNo;protected:    double price=0.0;};Quote::Quote(const string& s, double p) :bookNo(s), price(p) {}class BulkQuote :public Quote {public:    BulkQuote() = default;    BulkQuote(const string&s, double p, size_t q, double d) :        Quote(s, p), min_qty(q), discount(d) {}    double netPrice(size_t) const override;private:    size_t min_qty=0;    double discount = 0.0;};double BulkQuote::netPrice(size_t cnt) const {    if (cnt >= min_qty)        return cnt*(1 - discount)*price;    else return cnt*price;}

但要注意:类外应该加上域名限定符,即该构造函数属于哪一个类

Quote::Quote(const string& s, double p) :bookNo(s), price(p) {}

主函数

#include<iostream>#include"Quote.h"using std::cout; using std::endl;int main() {    BulkQuote bq("DargonBall", 15, 10, 0.5);    cout << "should pay: "<<bq.netPrice(15) << endl;    return 0;}

运行结果
should pay: 112.5

0 0
原创粉丝点击