多态性分:重载(OVERLOAD,重载只是函数名相同,返回类型,参数不同,早期匹配)
虚函数(函数必须有完全相同的返回类型和参数表,晚期匹配 )
虚函数:一般虚函数(基类有函数体有实现,子类可重写也可不重写)
纯虚函数(基类只有函数体没有实现 virtual fun()=0,子类必须实现此函数体,至少含有一个纯虚函数的类是抽象类)
虚函数的好处:单界面,多实现。
使指向基类对象的指针指向不同派生类的对象,就能访问虚函数的不能实现版本
例:
class Base
{
public:
virtual show(){count<<"base"<<"/n";}
};
class Derived:public Base
{
public:
show(){count<<"derived"<<"/n";}
};
main()
{
Base* p;
Derived d;
p=&d;
p->show();
}
结果:derived
如果去掉虚函数标识(virtual)结果:base