虚函数实现多态学习

119 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第29天 点击查看活动详情

基本介绍

基类:相当于函数的父类 派生类:相当于函数子类

  1. 如果基类和派生类出现同名函数怎么办?

    • 如果使用基类指针或者引用对派生类中的对象进行操作,那么只能调用基类的同名函数
    • 如果使用基类指针或者引用对派生类中的成员函数进行调用,那么就要使用虚函数
  2. 虚函数声明时要注意哪些问题?

    • 首先,虚函数不能是构造函数,但是可以是析构函数
    • 其次,静态成员函数不能声明为虚函数
    • 最后,虚函数也不能是友元函数

虚函数简介

  1. 只能用类中的成员函数来作为虚函数
  2. 声明为虚函数的关键字为virtual
  3. 虚函数的作用:使得派生类对虚函数重新定义,因此,虚函数只能存在于类的继承层次结构中
  4. 如果使用基类中的指针或者引用操作派生类对象调用函数,那么系统就会直接调用派生类中的虚函数
  5. 注意:如果想要在类外面实现虚函数,那么就不能在返回值类型前面使用virtual关键字。

final关键字易混点

final关键词既可以用修饰类,也可以用来修饰虚函数,如果用来修饰类,那么这个类就不能被继承,如果用来修饰虚函数,那么这个虚函数就不能在派生类中重写。

虚析构函数易混点

  • 注意:如果派生类继承基类,那么也就继承了基类的虚函数指针。
  • 在c++中,不能够声明虚构造函数,但是可以声明虚析构函数:vitural前+~
  • 如果在基类中声明虚析构函数,那么派生类中的析构函数都会变成虚析构函数。