gpt4 book ai didi

c++ - 派生类对象构造后调用虚函数

转载 作者:行者123 更新时间:2023-11-27 22:53:50 25 4
gpt4 key购买 nike

下面是一些示例代码:

#include <iostream>

class A {
public:
virtual void foo() {
std::cout << "base" << std::endl;
}

A() {
foo();
}
};

class B : public A {
int a;
public:
void foo() {
std::cout << "derived" << std::endl;
}

B(int a) :
a(a) {}
};

int main() {
B o(1);
return 0;
}

我希望每次构造一些 A 派生对象时调用 foo()。我不想在每个派生类构造函数中显式调用 foo()

有没有办法以某种优雅的方式做到这一点?

最佳答案

无论您做什么,都无法从基类构造函数中调用重写的 foo()。当调用基类构造函数时,派生类对象还没有构造,因此您不能调用它的任何方法或访问它的任何成员。虚函数和常规函数也是如此。在基类构造函数中,this 指针指向基类,而不是派生类。

关于c++ - 派生类对象构造后调用虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35072976/

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