c++中构造函数不能定义为虚函数的原因

1. 创建对象时,需要确定对象的类型,而虚函数是在运行时动态确定其类型的。在构造一个对象时,由于对象还未创建成功,编译器无法知道对象的实际类型;

2. 虚函数的调用需要通过vptr虚函数表指针,而该指针是存放在对象的内存空间中的,若构造函数声明为虚函数,那么由于对象尚未创建,还没有内存空间,也就没有对应虚函数表来调用虚构造函数了;

3. 虚函数的作用在于通过父类的指针或者引用,在调用它的时候能够通过动态链编调用子类重写的虚成员函数。而构造函数是在创建对象时是系统自动调用的,不可能通过父类或者引用去调用,因此就规定构造函数不能是虚函数。

posted @ 2021-04-07 08:28  唯一诺  阅读(623)  评论(0编辑  收藏  举报