从存储空间分析 虚函数对应一个vtable(虚函数表),每个类对象用一个虚表指针指向。如果构造函数是虚函数,就需要通过 vtable来调用,可是对象还没有实例化,无法找到vtable,所以构造函数不能是虚函数。 从使用角度分析 虚函数的作用在于通过父类的指针来调用时,变成调用子类的成员函数。而构造函数是在创建对象时自动调用的,不可能通过父类的指针去调用,因此也就规定构造函数不能是虚函数。