虚函数总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚函数总结相关的知识,希望对你有一定的参考价值。
因为平时不太常用 看C++PP的时候刷到这一部分内容,记录下来以后复习用
相关内容:
派生类构造函数要点:
1.首先创建基类对象
2.派生类构造函数应通过成员初始化列表将基类信息传递给基类构造函数
3.派生类构造函数应初始化派生类新增的数据成员
在派生类的初始化列表中通过基类的构造函数对派生类对象进行初始化是通过基类的复制构造函数完成的
因为复制构造函数传递的是引用类型,而基类可以引用派生类,所以编译器会自动将初始化后的新基类对象赋值给派生类对象,如果须要对派生类对象独有的变量进行初始化,可以在初始化列表后用逗号跟上,或者在构造函数花括号内写明
正文:
基类的指针或引用是可以指向或引用派生类的,以下都用指针来举例,引用也同样适用
指针调用非虚函数时会根据指针类型来判断使用的函数类型
说的简单点就是利用基类指针指向派生类对象时,利用该指针实现非虚函数,不管是否重载函数,都会调用基类的函数
这样就很不方便 例如一个基类指针数组,既存储既基类对象又存储派生类对象,那么在实际操作的时候会无法通过指针正确的访问派生类对象重载过的非虚函数
所以引入了虚函数的概念
指针调用虚函数时会根据指针所指向的对象类型来判断使用的函数类型
这样使用基类指针会方便很多
同时书上将基类的析构函数也定义为虚函数,何时需要这样做呢?
当基类对象的析构函数为非虚函数时将不会执行派生类的析构函数
如果派生类对象的析构函数执行了某些操作,例如delete释放内存,将会导致内存泄漏等情况的发生
为了防止这种意料之外的情况发生,基类必须要有一个虚析构函数,哪怕析构函数不执行任何操作,也要显示声明
待续
以上是关于虚函数总结的主要内容,如果未能解决你的问题,请参考以下文章