《C++程序设计案例教程》笔记之多态

1.函数重载是一种多态,运算符重载也是一种多态。运算符重载函数实质上也是函数,只不过函数名必须有关键字operator。

2.大多数运算符既可以重载为友元函数又可以重载为成员函数。一般将双目运算符重载为友元函数,将单目运算符重载为成员函数。

3.利用虚函数实现“一个接口,多种方式”,当用基类指针或引用对虚函数进行访问时,具体执行哪个函数只有在运行时才能知道。

4.与前面所讲的拷贝构造函数一样,为了避免内存泄露,凡是需要定义拷贝构造函数的类都需要对赋值运算符进行重载。

5.因为基类和派生类中的两个成员函数功能相同,所以采用相同的名字。两个成员函数同名,类型、参数完全相同,但是并不会产生二义性,而是同名覆盖,当通过派生类队形调用同名成员函数时,调用的是派生类中重写的成员函数。

6.基类的虚函数在派生类中仍然是虚函数,并且可以通过派生类抑制将这个虚函数继承下去,不需要加关键字virtual。只能通过指针或者引用来操作虚函数实现多态,如果通过对象名访问虚函数,则绑定仍然是编译时完成的,不能实现运行时多态。

7. 不能定义虚构造函数,但是可以定义虚析构函数

    如果派生类中存在动态内存分配,并且其内存释放是在析构函数中实现的,这是必须将析构函数声明为虚函数。

   当把析构函数函数声明为虚函数后,通过基类指针释放其所指的派生类对象时,按照构造的逆序真正将派生类对象完全释放。

   例程:

析构函数声明为虚函数

    调用基类构造函数

  调用派生类构造函数

输出派生成员

  调用派生类析构函数

  调用基类析构函数


析构函数不声明为虚函数

    调用基类构造函数

   调用派生类构造函数

输出派生成员

  调用基类析构函数


8.抽象类

包含纯虚函数的类为抽象类。

纯虚函数没有函数体,“=0”本子上是将指向函数体的指针定义为NULL.

不能创建抽象类的对象,但是可以定义抽象类指针和引用,只是他们只能指向派生类对象,用来实现运行时多态。


  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值