gpt4 book ai didi

c++ - 基类在被访问时未初始化

转载 作者:太空狗 更新时间:2023-10-29 21:39:24 24 4
gpt4 key购买 nike

以下代码:

#include <iostream>

struct A {
int a;
virtual int foo(){ std::cout << "foo()" << std::endl; return 5; }
A(int a) : a(a){ }
};

struct B : A{
B() : A(foo()){ }
};

int main()
{
B b;
}

LIVE DEMO

产生关于

的警告
warning: base class 'A' is uninitialized when used here to access 'A::foo'

这是否意味着在未初始化时访问基类会产生未定义的行为

在我的例子中,A::a 得到了值 5,没问题。

最佳答案

是的,这是未定义行为 (IIRC),因为 foo 是一个虚拟方法。

如果 foo 不是虚拟的,行为将被定义,但是在对象初始化之前调用该方法仍然是一个有问题的想法。

关于c++ - 基类在被访问时未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33094147/

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