#include<iostream>
#include<string>
#include<list>
#include<vector>
using namespace std;
class bulk_quote;
int main() {
system("pause");
return 0;
}
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 & book, double p, size_t qty, double disc) :
quote(book,p),min_qty(qty),discount(disc){}
double net_price(size_t)const override;
private:
size_t min_qty = 0;
double discount = 0.0;
};
double print_total(ostream &os, const quote &item, size_t n) {
double ret = item.net_price(n);
os << "isbn: " << item.isbn() << "# sold " << n << " total price " << ret << endl;
return ret;
}
double bulk_quote::net_price(size_t cnt)const {
if (cnt >= min_qty)
return cnt * (1 - discount)*price;
else
{
return cnt * price;
}
}
class disc_quote :public quote {
public:
disc_quote() = default;
disc_quote(const string& book,double price,size_t qty,double disc):
quote(book,price),quantity(qty),discount(disc){
}
double net_price(size_t)const = 0;
protected:
size_t quantity = 0;
double discount = 0.0;
};
class Bulk_quote :public disc_quote {
public:
Bulk_quote() = default;
Bulk_quote(const string& book,double price,size_t qty,double disc)://又到了接受参数然后传递的时候了
disc_quote(book,price,qty,disc){}
};
class base {
protected:
int prot_mem;
};
class sneaky :public base {
friend void clobber(sneaky&);
friend void clobber(base&);
int j;
};
void clobber(sneaky& s) { s.j = s.prot_mem = 0; }