gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:24:26 25 4
gpt4 key购买 nike

任何人都可以在下面的代码中向我解释构造函数调用。抽象类的构造函数是如何调用的,当不存在它的对象而只有一个指向派生类的指针时。是否创建了它的一个实例来保存 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();
}

最佳答案

pure_virtual类的构造函数在调用inherit的构造函数时被调用。因此,当 inherit temp; 行被执行时,对象的构造函数被调用,因为它是一个派生类。然后首先调用基类构造函数。

所以在你的情况下输出将是

Virtul class constructor called !
Derived class constructor called !

并且因为 void show() 是虚拟的,所以调用了正确的函数,即 inherit 类的函数。

关于C++抽象类构造函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com