第 15章 面向对象程序设计(一)

基类和派生类的头文件及cpp文件结构

以Quote基类和Bulk_quote派生类为例,记录头文件和cpp文件的构成。

目录

基类和派生类的头文件及cpp文件结构

Quote.h

Quote.cpp

Bulk_quote.h

Bulk_quote.cpp

main.cpp


Quote.h

#ifndef QUOTE_H
#define QUOTE_H
#include<string>
class Quote
{
public:
	Quote() =default;		//默认构造函数
	Quote(const std::string &book,double sales_price):  //构造函数
			bookNo(book),price(sales_price) {}
	std::string isbn() const {return bookNo;}			
	virtual double net_price(std::size_t n) const;   //虚函数:由派生类派根据折扣来重写
private:
	std::string bookNo;  //只被基类的函数使用
protected:
	double price=0.0;		//会被被派生类改写的函数使用
};
#endif

Quote.cpp

#include"Quote.h"
double Quote::net_price(std::size_t n) const
{
	return 6.0*n;
}

Bulk_quote.h

#ifndef BULK_QUOTE_H
#define BULK_QUOTE_H
#include"Quote.h"
class Bulk_quote:public Quote
{
public:
	//默认构造函数
	Bulk_quote()=default;
	//构造函数 调用基类构造函数(思想:每个类定义自己的接口)
	Bulk_quote(const std::string &book,double sales_price,std::size_t,double dis):
				Quote(book,sales_price),min_qty(size_t),discount(dis) {}; 
	//覆盖基类虚函数
	double net_price(std::size_t n) const override;
	
private:
	//派生类的新成员
	std:size_t min_qty=0;
	double discount=0.0;
};
#endif

Bulk_quote.cpp

#include"Bulk_quote.h"
double Bulk_quote::net_price(std::size_t n) const
{
	return n*5;
}

main.cpp

#include<iostream>
#include"Quote.h"
#include"Bulk_quote.h"
using std::cout;
using std::endl;
using std::ostream;
//将基类对象的引用作为参数
double print_total(ostream &os,const Quote &item,size_t n)
{
	double ret=item.net_price(n); //通过基类指针和引用调用虚函数会在运行时发生动态绑定
	return ret;
}
int main()
{
	Quote item;  //基类
	Bulk_quote bulk; //派生类
	cout<<print_total(cout,bulk,5)<<endl;  //静态类型为Quote,动态类型为Bulk_quote
	cout<<print_total(cout,item,5)<<endl;  //静态类型为Quote,动态类型为Quote
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值