广州C/C++培训
达内广州岗顶中心

18087159764

热门课程

C++在什么情况下应当声明虚函数

  • 时间:2016-12-28
  • 发布:广州C++培训
  • 来源:达内新闻

C++在什么情况下应当声明虚函数

使用虚函数时,有两点要注意:

只能用virtual声明类的成员函数,使它成为虚函数,而不能将类外的普通函数声明为虚函数。因为虚函数的作用是允许在派生类中对基类的虚函数重新定义。显然,它只能用于类的继承层次结构中。

一个成员函数被声明为虚函数后,在同一类族中的类就不能再定义一个非virtual的但与该虚函数具有相同的参数(包括个数和类型)和函数返回值类型的同名函数。

根据什么考虑是否把一个成员函数声明为虚函数呢?主要考虑以下几点:

首先看成员函数所在的类是否会作为基类。然后看成员函数在类的继承后有无可能被更改功能,如果希望更改其功能的,一般应该将它声明为虚函数。

如果成员函数在类被继承后功能不需修改,或派生类用不到该函数,则不要把它声明为虚函数。不要仅仅考虑到要作为基类而把类中的所有成员函数都声明为虚函数。

应考虑对成员函数的调用是通过对象名还是通过基类指针或引用去访问,如果是通过基类指针或引用去访问的,则应当声明为虚函数。

有时,在定义虚函数时,并不定义其函数体,即函数体是空的。它的作用只是定义了一个虚函数名,具体功能留给派生类去添加。

需要说明的是:使用虚函数,系统要有一定的空间开销。当一个类带有虚函数时,编译系统会为该类构造一个虚函数表(virtual function table,简称vtable),它是一个指针数组,存放每个虚函数的入口地址。系统在进行动态关联时的时间开销是很少的,因此,多态性是高效的。

上一篇:C++虚析构函数详解
下一篇:C++静态关联与动态关联,怎样实现多态性

达内广州c++培训:享阿里市值突出重围

2017python虚拟环境机制研究分析

广州地区c语言课程:存管理与垃圾回收

王者荣耀兼容iPhone 8/8 Plus高帧率

选择城市和中心
贵州省

广西省

海南省