问题
虚函数可以说是在涉及C++的面试问题中经久不衰的话题了,这里就介绍一下虚函数的概念以及相关的常见问题。
初识虚函数
● 虚函数是指在基类内部声明的成员函数前添加关键字 virtual 指明的函数
● 虚函数存在的意义是为了实现多态,**让派生类能够重写(override)**其基类的成员函数
● 派生类重写基类的虚函数时,可以添加 virtual 关键字,但不是必须这么做
● 虚函数是动态绑定的,在运行时才确定,而非虚函数的调用在编译时确定
● 虚函数必须是非静态成员函数,因为静态成员函数需要在编译时确定
● 构造函数不能是虚函数,因为虚函数是动态绑定的,而构造函数创建时需要确定对象类型
● 析构函数一般是虚函数
● 虚函数一旦声明,就一直是虚函数,派生类也无法改变这一事实
下面举个例子来帮助理解:
#include<iostream>
using namespace std;
class Base {
public:
void f() { cout << "Base::f" << endl; }; //一般成员函数
virtual void f1() { cout << "Base::f1" << endl; }; //虚函数
private:
char aa[3];
};
class De
|