/*
Date: 13/03/21 20:26
Description: 定义基类和派生类 父类 Item_base <----- 子类 Bulk_item
基类:
virtual函数
protected成员
派生类
类派生列表
重定义vietual函数
可以访问基类的public和protected成员
*/
#include<iostream>
using namespace std;
class Item_base
{
public:
Item_base(const string& book = "",double sales_price = 0.0)
:isbn(book),price(sales_price){}
string getIsbn()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 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<<price<<endl;
}
void test2(const Bulk_item& d,const Item_base &b)
{
cout<<d.price<<endl;
// cout<<b.price<<endl;这样子不可以哟
}
double net_price(size_t cnt)const //重定义vietual函数
{
if(cnt>=min_qty)
return cnt*(1-discount)*price;
else
return cnt*price;
}
private:
size_t min_qty;
double discount;
};
int main()
{
Item_base item("0-12-3456-789",9.9);
cout<<item.net_price(10)<<endl;
Bulk_item item2("0-12-3456-789",9.9,20,0.12);
cout<<item2.net_price(19)<<endl;
cout<<item2.net_price(20)<<endl;
return 0;
}
c++学习-oop-定义基类和派生类
最新推荐文章于 2022-05-25 15:07:53 发布