#include<iostream>
#include<string>
using namespace std;
class Animal
{
};
class Dog :public Animal//冒号就叫做继承和派生
{
};
class Item_base
{
public:
int a;
Item_base(const std::string &book = " ",
double sales_price = 0.0)
:isbn(book), price(sales_price){}//构造函数
//普通的成员函数
std::string book() const
{
return isbn;
}
virtual double net_price(size_t n) const//定义成一个虚函数,在子类你就可以重新定义
{
return n*price;
}
private:
string isbn;
protected://受保护的数据成员是专门用来做继承的
double price;
};
class Bulk_item:public Item_base
{
public:
Bulk_item(const std::string &book = " ",
double sales_price = 0.0, size_t qty = 0,double disc_rate=0.0)
:Item_base(book, sales_price), min_qty(qty), discount(disc_rate){}
void test()
{
cout << a << endl;//a是继承来的
cout << price << endl;
}
void test2(const Bulk_item &d, const Item_base &b)//d是继承来的
{
cout << d.price << endl;
}
double net_price(size_t cnt) const//因为是虚函数,就可以重新写。
{
if (cnt >= min_qty)
return cnt*(1 - discount)*price;
else
return cnt*price;
}
private:
size_t min_qty;
double discount;
};
int main()
{
Animal a;
Dog b;
Item_base item("12124",9.9);
//cout << item.a << endl;
Bulk_item item2("5454",9.9,10,0.12);
//cout << item2.a << endl;//a是继承过来的
item2.test();
item2.test2(item2,item);//一个是小子,一个是老子
cout << item.net_price(10) << endl;
system("pause");
return 0;
}
普通的类没有继承,不需要虚函数和保护成员的