OOP:面向对象编程
原文链接:https://blog.csdn.net/qq_39355828/article/details/110864588 (opens new window)
# OOP:面向对象编程
1.数据抽象:将类的实现和接口分离
2.继承:相似类型对相似关系建模
3.动态绑定:
//size_t 无符号类型
class Quote//基类
{
public:
std:string isbn() const;
virtual double net_price(std::size_t n)const;//使得派生类必须在内部重新定义派生类
}
class Bulk_quote:public Quote//派生类
{
public:
double net_price(std::size_t)const override;
};
double print_total(ostream &os,const Quote &item,size_t n)
//动态绑定,用一段代码分别处理Quote和 Bulk_quote,可以分别传入基类和派生类两种类型
{
double ret=item.net_price();
os<<"ISBN"<<item.isbn()<<"#sold:"<<n<<"total due "<<ret<<endl;
return ret;
}
//定义派生类
class Bulk_quote:public Quote{
public:
Bulk_quote()=default;
Bulk_quote(const std::string &,double,std::size_t,double)//覆盖基类的函数版本以实现基于大量购买的折扣政策
double net_price(std::size_t) const override;
private:
std::size_t min_qty=0;//适用折扣政策的最低购买量
double discount=0.0;//以小数表现的折扣额
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
编辑 (opens new window)
上次更新: 2026/08/11, 13:36:18