个人理解:
多态是使函数复用更加方便简洁的一种c++功能,基于基类和派生类实现,虚函数是其实现的重要载体,多态的使用与动态联编有关。
例子
多态通过使用虚函数实现函数的重写而非重载,使多个派生类中可以存在同名同类型同形参的函数,而不会相互覆盖。(实现函数重写)
多态实现基础--虚函数
class base{
virtual int get();虚函数即在普通类函数里面加“virtual"关键字,而在类外编写时不需要
};
int base::get(){
}
多态的两种机制
1,指针使用
派生类指针赋给基类指针
1.该指针指向派生类对象,调用派生类虚函数
2.该指针指向基类对象,调用基类虚函数
2.引用的使用
派生类对象赋给基类的引用
同上
动态联编
静态联编指在程序编译过程中进行的,高效,占用内存空间小,充分体现c++特性
动态联编是在程序执行过程中进行的,当执行到虚函数所在行时才会判断调用哪个函数,由于其在实行过程中要建立指针数组的操作会增大内存,同时查找过程消耗时间,因此好用但不高效
虚函数访问权限
当基类为private时虚函数会调用失败,编译出错
构造函数与析构函数中调用虚函数
1。构造函数中没有虚函数(由于构造函数的调用具有顺序性,可理解为虚函数没有选择的对象,只能构造当前函数)
2.析构函数必须有虚函数(在派生类存在情况下)
原因是当多态发生时,以多态调用的第一种情况--指针为例,如果没有虚函数,则该指针被delete时只会清除基类的指针空间,派生类仍存在,占用内存,必须使用虚函数来调用派生类析构函数清除这一部分空间
纯虚函数与抽象类
虚函数后接”=0“并非赋值,而是表示此为纯虚函数。此函数所在类为抽象类,不能再实例化。