C++ Primer 5th笔记(chap 15 OOP)继承概念

1. 派生类可以访问其基类中的公有成员和受保护的成员。

一个派生类对象包含多个组成部分:含有派生类自定义的对象,继承自基类的对象。

eg. 一个单继承的例子。

//定义基类
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
			{return n * price;}
	virtual ~Quote() =  default;	//对析构函数进行动态绑定
private:
	std::string bookNo;		//书籍的 ISBN 编号
protected:
	double price = 0.0;		//表示普通状态下不打折的价格
};

//定义派生类
 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;
};

2. 对象内存分布:

在这里插入图片描述

  • 同一个对象中,继承自基类的部分和派生类自定义的部分不一定是连续存储的。

3. 间接派生

一个类是基类,同时也可以是派生类:

class Base{/*...*/};
calss D1 : public Base {/*...*/};
class D2 : public D1 {/*...*/};

Base 是 D1 的直接基类,同时是 D2 的间接基类。直接基类出现在派生列表中,而间接基类由派生类通过其直接基类继承而来。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

thefist11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值