纯虚函数就是一个在基类中的虚函数,差别只是在一般的虚函数声明的后面加了“=0”,虚函数允许函数通过与函数体之间的联系在运行时才建立,也就是在运行时才决定如何动作,称为运行时的多态性,虚函数是可以有具体实现代码的。那么,为什么要有纯虚函数?在基类中的函数只有说明而没有具体定义的时候,不执行有意义的操作,也没有具体去实现代码,于是在派生类中就可以实现具体的操作,无论是单继承也好,还是多继承也好,重新定义这个在基类声明的函数,这个函数的实现可以根据需求去实现,咱们来看一个例子:
#include <iostream> #include <cstring> using namespace std ; //动物类是基类 class Animal { private : string name ; int age ; char sex ; int score ; public : //声明纯虚函数 virtual int setdog(string name , int age ,char sex , int score) = 0 ; virtual void show() = 0; }; //狗也是动物,狗类是动物类的 派生类 class Dog : public Animal { private: string name ; int age ; char sex ; int score ; public: int setdog(string name , int age , char sex , int score); void show() { cout << "Dog name:" << this->name << endl ; cout << "Dog age:" << this->age << endl ; cout << "Dog sex:" << this->sex << endl ; cout << "Dog score:" << this->score << endl ; } }; int Dog::setdog(string name , int age , char sex , int score) { this->name = name ; this->age = age ; this->sex = sex ; this->score = score ; } int main(void) { Animal *ptr ; Dog dog ; ptr = &dog ; ptr->setdog("HUAHUA",3,'Y',66); ptr->show(); return 0 ; }狗类是动物类的派生类,动物类作为基类,没有具体实现setdog和show方法,在狗类中实现了这两个方法,这两个方法也被称之为派生类的虚函数。
通过指针ptr指向派生类对象,调用派生类对象的虚函数。
运行结果:
Dog name:HUAHUA
Dog age:3
Dog sex:Y
Dog score:66