C++ c++;抽象类构造函数调用

C++ c++;抽象类构造函数调用,c++,abstract-class,C++,Abstract Class,有人能用下面的代码向我解释构造函数调用吗。 当抽象类的构造函数没有对象,只有指向派生类的指针时,它是如何调用的。是否创建了一个实例来保存vtable #include <iostream> using namespace std; class pure_virtual { public: pure_virtual() { cout << "Virtul class constructor called !" << endl;

有人能用下面的代码向我解释构造函数调用吗。 当抽象类的构造函数没有对象,只有指向派生类的指针时,它是如何调用的。是否创建了一个实例来保存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();
}
#包括
使用名称空间std;
类纯虚拟{
公众:
纯虚拟{

cout调用
inherit
的构造函数时,调用
pure\u virtual
类的构造函数。因此,当执行行
inherit temp;
时,调用对象的构造函数,因为它是派生类。然后首先调用基类构造函数

因此,在您的情况下,输出将是

Virtul class constructor called !
Derived class constructor called !

由于
void show()
是虚拟的,因此调用了正确的函数,即
inherit
类的函数。

派生类的构造函数调用它们的基类的构造函数。谢谢,先生!该死的,我需要学很多东西。嘿!谢谢你的建议!