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 的间接基类。直接基类出现在派生列表中,而间接基类由派生类通过其直接基类继承而来。