个人认为主要原因有两个
原因1.
虚函数是由一个Virtual Table(虚函数表)来实现,这个表中主要是虚函数的地址表;
这个 vtable 被分配在对象的内存中;
如果构造函数是虚函数,需要通过vtable来调用,可是对象还没有被实例化也就是还没有内存空间,无法找到vtable;
原因2.
通过父类的指针调用虚函数的时候会自动变成调用子类的那个成员函数;
构造函数是在创建对象时自动调用,不可能通过父类的指针去调用;