任何人都可以在下面的代码中向我解释构造函数调用。 当没有对象但是只有指向派生类的指针时,如何调用抽象类的构造函数。是否创建了一个实例来保存vtable?
#include <iostream>
using namespace std;
class pure_virtual {
public:
pure_virtual() {
cout << "Virtul class constructor called !" << endl;
}
virtual void show()=0;
};
class inherit: public pure_virtual {
public:
inherit() {
cout << "Derived class constructor called !" << endl;
}
void show() {
cout <<"stub";
}
};
main() {
pure_virtual *ptr;
inherit temp;
ptr = &temp;
ptr->show();
}
答案 0 :(得分:2)
调用pure_virtual
的构造函数时,将调用inherit
类的构造函数。因此,当执行行inherit temp;
时,正在调用对象的构造函数,因为它是派生类。然后首先调用基类构造函数。
所以在你的情况下,输出将是
Virtul class constructor called !
Derived class constructor called !
因为void show()
是虚拟的,所以调用了正确的函数,即inherit
类的函数。