现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

引入虚函数

2012-11-25 08:48 工业·编程 ⁄ 共 617字 ⁄ 字号 暂无评论

C++中实现多态通过函数重载(静态多态)和虚函数(动态多态)两种方式实现,通过将基类中函数定义为虚函数并在派生类中重新定义,从而实现成员函数的动态重载,另外,很多情况下基类不需要生成具体对象,这时通过将基类中成员函数定义为纯虚函数即可实现。具体方法如下:

virtual return_type member_function(parameters list)=0;

此时含此函数的积累称为抽象类,其派生类中必须对该函数进行重新定义。多态的关键之处就是一切用指向基类的指针或引用来操作对象。

定义虚函数的限制

       (1)非类的成员函数不能定义为虚函数,类的成员函数中静态成员函数和构造函数也不能定义为虚函数,但可以将析构函数定义为虚函数。实际上,优秀的程序员常常把基类的析构函数定义为虚函数。因为,将基类的析构函数定义为虚函数后,当利用delete删除一个指向派生类定义的对象指针时,系统会调用相应的类的析构函数。而不将析构函数定义为虚函数时,只调用基类的析构函数。

(2)只需要在声明函数的类体中使用关键字“virtual”将函数声明为虚函数,而定义函数时不需要使用关键字“virtual”。

(3)当将基类中的某一成员函数声明为虚函数后,派生类中的同名函数自动成为虚函数。

(4)如果声明了某个成员函数为虚函数,则在该类中不能出现和这个成员函数同名并且返回值、参数个数、类型都相同的非虚函数。在以该类为基类的派生类中,也不能出现这种同名函数。

给我留言

留言无头像?