面试题| 虚函数的概念以及相关的常见问题

问题

虚函数可以说是在涉及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

Guess you like

Origin blog.csdn.net/weixin_54707168/article/details/120630538