什么是虚函数

  • 格式:pdf
  • 大小:52.16 KB
  • 文档页数:1

什么是虚函数

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

⾸先:强调⼀个概念定义⼀个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许⽤基类的指针来调⽤⼦类的这个函

数。定义⼀个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现⼀个接⼝,起到⼀个规范的作⽤,规范继承这个类的程序

员必须实现这个函数。1、简介假设我们有下⾯的类层次:class A{

public:

virtual void foo()

{

cout<<"A::foo() is called"<

}

};

class B:public A

{

public:

void foo()

{

cout<<"B::foo() is called"<

}

};

int main(void)

{

A *a = new B();

a->foo(); // 在这⾥,a虽然是指向A的指针,但是被调⽤的函数(foo)却是B的!

return 0;

}

这个例⼦是虚函数的⼀个典型应⽤,通过这个例⼦,也许你就对虚函数有了⼀些概念。它虚就虚在所谓“推迟联编”或者“动态联编”上,⼀个类

函数的调⽤并不是在编译时刻被确定的,⽽是在运⾏时刻被确定的。由于编写代码的时候并不能确定被调⽤的是基类的函数还是哪个派⽣类

的函数,所以被成为“虚”函数。 虚函数只能借助于指针或者引⽤来达到多态的效果。