gpt4 book ai didi

c++ - 类成员变量的初始化顺序

转载 作者:行者123 更新时间:2023-11-28 08:34:40 27 4
gpt4 key购买 nike

考虑以下代码片段:

class A
{
public:
A(int a, int b) : j(a), i(j + b) {}
int i, j;
};

int main()
{
A a(10, 20);
std::cout << a.i << " " << a.j << std::endl;
return 0;
}

标准says成员变量的初始化顺序是它们声明的顺序。在这种情况下,i 将在 j 之前被初始化。由于 j 尚未初始化,i = *一个垃圾值* + 20,然后 j 被初始化为 10.

代码prints 20 10

即在计算i时,j被认为是0

标准是否保证在这种情况下对内置类型使用默认值?或者只是垃圾值恰好是 0?还是未定义的行为

最佳答案

Does the standard guarantee to use default values for built-in types in such a scenario?

没有。在这种情况下,该值是不确定的。

Or is it undefined behavior?

是的。读取不确定值的行为是未定义的(窄字符类型 IIRC 除外)。

关于c++ - 类成员变量的初始化顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59426054/

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