首先:到底能不能将构造函数声明为虚函数?
答案是不能。先看下面例子的编译结果。
#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(