多态
是对于不同对象接收相同消息时产生不同的动作,体现在编译和运行两个方面。
编译时多态体现在函数和运算符的重载上
运行时多态通过继承和虚函数体现
虚函数
在基类中冠以关键字virtual的成员函数,使得允许在派生类中对基类的虚函数重新定义
对虚函数的调用有动态联编和静态联编。
构造函数不能是虚拟的,但析构函数可以是虚拟的
只有当访问虚函数是通过基类指针s是才能获得运行时多态
class A{
virtual int fun(){}
};
class B:public A
{
int fun(){}
};
void main()
{
A *s;
B b;
s=&b;
int m=s->fun;
}
纯虚函数
在基类中声明但是没有定义的虚函数,而且设置函数值等于0
virtual type func_name()=0;
抽象类
包含有纯虚函数的类成为抽象类
不能说明抽象类的对象,但能说明抽象类的指针,抽象类的指针用与指向该抽象类派生类的对象。一个抽象类只能作为基类来派生其他的类
虚析构函数
当需要用基类指针删除派生类对象时,可以构造虚析构函数