1.何为虚函数?
在某基类中声明为 virtual, 并在一个或多个派生类中被重新定义(虚函数的重写)的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};
2.为啥被称为虚函数
由于编写代码的时候并不能确定被调用的是基类的函数还是哪个派生类的函数,所以被成为“虚”函数。
3.虚函数有什么作用?
实现多态性。通俗来讲就是允许基类指针调用子类的函数
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;
}