最近在准备校招,做了一些笔试题,发现以前的基础知识确实有一些遗失,好脑袋不如烂笔头,所以决定随笔记下一些基础知识,以备后用。今天就先写一写虚函数与纯虚函数。
虚函数是类中被virtual关键字修饰的成员函数,为了实现类的多态性,即将接口与实现分离,需要注意的是虚函数必须实现,如果不实现,编译器会报错,还有一点需要注意的是编译器的报错是在链接时,而不是在编译时。
virtual ReturnType FunctionName(Parameter);
很多时候,我们不需要基类生成对象,这时候可以将虚函数定义为纯虚函数,编译器要求在派生类中必须予以重写以实现多态性。含有纯虚拟函数的类称为抽象类,它不能生成对象。
virtual ReturnType FunctionName(Parameter)=0;
含有纯虚函数的基类只能被继承,不能被实例化,而且该虚函数在派生类中必须实现。