1.虚函数对应一个虚函数表,虚函数表其实是存储在对象的内存空间的。如果构造函数是虚的,就需要通过 虚函数表来调用,可是对象还没有实例化,也就是内存空间还没有,就没有虚函数表,所以构造函数不能是虚函数。
2.虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时自动调用的,不可能通过父类的指针或者引用去调用,因此也就规定构造函数不能是虚函数。
本文解释了构造函数不能被声明为虚函数的原因:一是因为构造函数需要初始化对象,而虚函数表需要对象实例化后才能访问;二是构造函数不能通过父类指针或引用调用。
1.虚函数对应一个虚函数表,虚函数表其实是存储在对象的内存空间的。如果构造函数是虚的,就需要通过 虚函数表来调用,可是对象还没有实例化,也就是内存空间还没有,就没有虚函数表,所以构造函数不能是虚函数。
2.虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时自动调用的,不可能通过父类的指针或者引用去调用,因此也就规定构造函数不能是虚函数。
7899
1057

被折叠的 条评论
为什么被折叠?