gpt4 book ai didi

C++:局部自动变量是否初始化? Stroustrup 示例

转载 作者:行者123 更新时间:2023-12-01 14:10:38 27 4
gpt4 key购买 nike

以下示例来自 Stroustrup C++ 4th Ed。第 519 页。这是我从 K&R C 和更早的 Stroustrup 书中的理解,即原始类型的局部自动变量 未定义或未知被初始化 .原始类型的静态变量或具有默认构造函数的类的自动变量被初始化。
这意味着 int b应该是未定义的并且不知道被初始化。然而,Stroustrup 添加了以下代码注释说 b = 0 .这是勘误吗?或者也许是使用默认构造函数调用的一些行为?
谢谢

struct S { 
string a;
int b;
};

void f(void) {
S s0 {}; // default construction: {"",0}
// ...
}

最佳答案

这很简单。您可以保留未初始化的内置类型变量,也可以要求编译器对它们进行零初始化。
S s1;//字符串默认初始化,int 未初始化
S s2{};//所有字段都被初始化。

注意 {} .这(在这种情况下)要求编译器初始化所有字段。

关于C++:局部自动变量是否初始化? Stroustrup 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62505873/

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