首先:到底能不能将构造函数声明为虚函数?
答案是不能。先看下面例子的编译结果。
#include <iostream>
using namespace std;
class Parent
{
public:
virtual Parent(int a = 0)
{
this->a = a;
}
virtual void print()
{
cout<< "Parent." <<endl;
}
private:
int a;
};
class Child : public Parent
{
public:
Child(int

C++中构造函数不能声明为虚函数,因为vptr指针在构造函数中初始化,而执行虚函数需要vptr,这导致先有鸡还是先有蛋的问题。因此,为了保证对象初始化的正确性,构造函数不能是虚函数。
最低0.47元/天 解锁文章
431

被折叠的 条评论
为什么被折叠?



