C++之多态和虚函数
2021-06-06 09:03
标签:直接 存在 自己 strong 函数 函数名 访问 方便 情况 在编程语言和类型论中,多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。 可以说虚函数才是实现多态的关键内容。 (本质还是为了根据指针和偏移找到相应的对象) C++之多态和虚函数 标签:直接 存在 自己 strong 函数 函数名 访问 方便 情况 原文地址:https://www.cnblogs.com/ming-fei/p/14615414.html多态
多态类型(英语:polymorphic type)可以将自身所支持的操作套用到其它类型的值上。(百度百科)
换一种说法:基类指针可以按照基类的方式来做事,也可以按照派生类的方式来做事,它有多种形态,
或者说有多种表现方式,我们将这种现象称为多态(Polymorphism)。
构成多态的条件(必要)
虚函数
没有虚函数的情况下,把一个派生类对象赋给基类指针,基类指针只能访问到自己已经有的内容,更尴尬的是
如果基类指针调用的函数在派生类中有同名函数,那么基类指针也只会调用自己函数。
在执行构造函数之前对象尚未创建完成,虚函数表尚不存在,也没有指向虚函数表的指针,所以此时无法查询虚函数表,也就不知道要调用哪一个构造函数
*析构函数可以声明为虚函数,而且有时候必须要声明为虚函数,且大部分情况下都应该将基类的析构函数声明为虚函数
原因:只有这样在多态的情况下,才能保证各个基类和派生类的析构函数执行到纯虚函数(一定意义上的接口)
关于虚基类表和虚函数表,简单总结一下