虚函数:
在函数的声明前面加上一个“virtual”关键字,便可声明一个虚函数。
从本质上讲,虚函数实现了“一个接口,多种方法”的理念,而这种理念是多态性的基础。
基类通过在函数声明前加“virtual”定义一个虚函数,其各级派生类将继承这一虚函数,同时也继承了这一函数的虚属性。如果在某一派生类中重新定义了该虚函数的实现,则一个指向该类对象的基类指针或基类引用在调用该对象的该函数时将调用该类中定义的内容;如果在该派生类中没有定义该虚函数的实现,则一个指向该类对象的基类指针或基类引用在调用该对象的该函数时将调用在继承关系中曾定义了该函数的与当前类距离最近的类中定义的方法。
纯虚函数:
纯虚函数时没有在基类定义的虚函数,具体定义形式如下:
virtual type func-name(parameter-list)=0;
当一个虚函数变为纯虚函数时,任何派生类必须给出该函数的定义,如果派生类未能定义该纯虚函数,则将导致编译错误!
抽象类:至少包含一个纯虚函数的类称为抽象类。抽象类是不完整的类,因而不能创建抽象类的对象,但却可以创建抽象类的指针和引用。
评论