c++中的虚函数总结
- 用作多态的实现 :
在基类和派生类中定义同名函数display(),在基类的display()函数的声名前添加virtual,
基类对象:Student stu1;
派生类对象:Graduate gra1;
Student *p= & stu1; p->display();
这个时候调用的display()是在基类Student中定义的display();然后将基类指针变量指向派生类的对象
p= & gra1; p->display();
,这个时候调用的p->display()
这个函数就是派生类中定义的display(),因而在接口不变的情况下通过改变p的指向而实现了基类和派生类中函数的多态性。 - 虚析构函数:
在基类中对析构函数进行virtual声明,则不论在何种情况下都会按照先执行派生类中的析构函数再执行基类中的析构函数顺序来全部执行析构函数。 - 纯虚函数:
在基类中定义某些函数为纯虚函数,纯虚函数中什么都不做,
virtual float area() = 0
这种定义即为纯虚函数,纯虚函数往往是为派生类所设计的,只在基类中进行声明,而在派生类中具体对其重定义而实现一些操作。纯虚函数往往在抽象基类中使用,抽象基类中一旦定义了纯虚函数就不能再定义对象了,只能作为基类去衍生派生类;