在C++中,基类的构造函数不能被定义为虚函数,原因有两个: 构造函数的目的是初始化对象。当我们创建一个对象时,构造函数被调用来初始化对象的数据成员。在这个阶段,对象才刚刚开始被构建,还没有完全形成,因此它还不具备执行虚函数调用的条件(即,动态绑定)。因为执行虚函数调用需要通过对象的虚函数表指针,而这个指针...
构造函数不能是虚函数,因为构造函数就是帮助完成对象初始化创建的,此时对象还没有完全生成,不能支持虚函数机制。虚函数的调用依赖于虚函数表,而指向虚函数表的指针需要在构造函数中进行初始化,所以构造函数无法定义为虚函数。 基类的析构函数需要定义为虚函数是为了实现动态绑定,基类指针指向派生类对象,如果析构函数不...