一、从存储空间角度
虚函数对应一个vtable,这个vtable实际是存储在对象的内存空间,那么问题来了,如果构造函数是虚的,就需要vtable来调用,可是我们的对象
还没有实例化,也就是内存空间还有办法找到vtable,所以构造函数不能是虚函数。
二、从使用角度
构造函数本来就是要初始化实例,那么使用虚函数也没有实际意义呀,所以构造函数没必要是虚函数。而虚函数的作用是在于通过父类指针或者
引用来调用他的时候,能够变成调用子类的那个成员函数,因此构造函数不需要是虚函数,也不允许是虚函数。
三、从实现上看
vatl在构造函数调用后才建立,因而构造函数不可能为虚函数