《C++ Primer》面向对象程序设计

一、定义基类和派生类

0、基本概念:

class A{}
class B:public A {}

派生类需要通过派生类列表,明确指出它从哪个基类继承而来。 

1、基类希望它的派生类各自定义适合自身的版本,在基类时将这些函数声明为virtual 虚函数virtual 不能出现在类外部的定义

    派生类需要对其内部所有重新定义的虚函数进行声明。(通过在后面加override 表明覆盖原来的哪个基类成员函数)

class Quate{
   virtual double price(int n) const;
};

class Bulk_quote:public Quate{
    double price(int n) const override;//后面加override
};

 2、动态绑定

double print(const Quate& item){
   double ret=item.price(n);
   return ret;
};

print(Quate);//调用基类
print(Bulk_Quate);//调用派生类

 在该成员函数中形参是基类的引用(或指针)!!!,会动态绑定,根据实际输入类型决定调用的类型。

3、派生类对象中有两部分:除了自定义的成员还包含从基类继承来的对象

派生类到基类的隐式转换,

Quate item;
Bulk_Quate bulk;
Quate *p=&item;//p指向Quate对象
p= &bulk;//p指向bulk的Quate部分

但是没有基类到派生类的转换。

原因在于,无法判断该基类为独立基类还是属于派生类一部分存在的。

Quate base;
Bulk_quote* bulk=&base;//错误,不能将基类转化为派生类

 派生类初始化构造函数先初始化基类部分,再初始化派生类部分;

析构函数,先析构派生类,再析构基类。

二、虚函数

见条款9

三、纯虚函数

从上面的定义可以看到,纯虚函数就是没有函数体,同时在定义的时候,其函数名后面要加上“= 0”

虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,

它的实现留给该基类的派生类去做。这就是纯虚函数的作用。

引入原因:在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。

四、访问控制与继承

 

五、继承中的类作用域

 

六、构造函数与拷贝控制

 

七、容器与继承

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值