1. 建立对象时,须要肯定对象的类型,而虚函数是在运行时动态肯定其类型的。在构造一个对象时,因为对象还未建立成功,编译器没法知道对象的实际类型;函数
2. 虚函数的调用须要经过vptr虚函数表指针,而该指针是存放在对象的内存空间中的,若构造函数声明为虚函数,那么因为对象还没有建立,尚未内存空间,也就没有对应虚函数表来调用虚构造函数了;指针
3. 虚函数的做用在于经过父类的指针或者引用,在调用它的时候可以经过动态链编调用子类重写的虚成员函数。而构造函数是在建立对象时是系统自动调用的,不可能经过父类或者引用去调用,所以就规定构造函数不能是虚函数。对象