虚函数与纯虚函数的区别
虚函数的作用
虚函数的作用基类的指针可以调用子类的该函数,虚函数在基类中必须要实现。
纯虚函数在基类中不需要实现,子类中必须实现该函数。
虚函数
#include <iostrem>
using namespace std;
class Animal {
public:
virtual void printClassName() {
cout << "Animal" << endl;
}
};
class Dog:public Animal {
public:
void printClassName() {
cout << "Dog" << endl;
}
};
int main() {
Animal* ptr = new Dog();
ptr->printClassName();// ptr虽然是指向Animal的指针,但调用的Dog中printClassName()
return 0;
}
纯虚函数
为什么要用纯虚函数
很多情况下父类生成的对象是不合理的,比如动物类作为父类,可以派生出狗、老虎、狮子等子类,用动物类实例化一个对象不合理。
定义
纯虚函数在父类中没有实现,在子类中要实现。
其在父类中的格式为:virtual returnType funcName(参数) = 0;