虚函数是指:在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,即被virtual关键字修饰的成员函数;格式为“virtual 函数返回类型 函数名(参数表) {函数体}”。

在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。

简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。

首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义它为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。

例:

class A{public:virtual void foo(){cout<<"A::foo() is called"<<endl;}};class B:public A{public:void foo(){cout<<"B::foo() is called"<<endl;}};int main(void){A *a = new B();a->foo(); // 在这里,a虽然是指向A的指针,但是被调用的函数(foo)却是B的!return 0;}

这个例子是虚函数的一个典型应用,通过这个例子,也许你就对虚函数有了一些概念。它虚就虚在所谓“推迟联编”或者“动态联编”上,一个类函数的调用并不是在编译时刻被确定的,而是在运行时刻被确定的。由于编写代码的时候并不能确定被调用的是基类的函数还是哪个派生类的函数,所以被成为“虚”函数。 虚函数只能借助于指针或者引用来达到多态的效果。

更多相关文章

  1. c语言数组怎么定义?
  2. C++学习之new()和malloc()函数
  3. 二维数组怎么定义
  4. c语言怎么定义宏定义
  5. srand(time(null))函数是什么意思
  6. srand(time(0))函数是什么意思
  7. malloc函数的用法
  8. c语言定义函数
  9. memcpy函数用法

随机推荐

  1. Xamarin Mono Android实现“再按一次退出
  2. 一起学android之EditText的各种使用(15)
  3. Android -- 设置textview文字居中或者控
  4. 在Android模拟器安装应用
  5. Android开发常用代码片段(三)
  6. Kotlin Anko Layout+MVP(Glide,Retrofit,
  7. APIDEMO GRIDVIEW
  8. Android(安卓)读取内存文件返回byte数组
  9. #AndroidDevSummit,就在此刻!
  10. Android TextView多行文本滚动实现