gpt4 book ai didi

c++ - C++03 中的大括号初始化

转载 作者:行者123 更新时间:2023-11-30 01:16:28 26 4
gpt4 key购买 nike

这个程序是否应该在 C++03 中正确初始化字符串?

#include <iostream>
#include <string>

struct A
{
std::string s;
};

int main()
{
A a = { };
std::cout << a.s.size() << std::endl;

}

使用 bcc32 6.70,输出为 256 ,并在调试器中检查字符串,其内部指针似乎是垃圾地址。

最佳答案

A 是一个 aggregate而 C++03 允许使用花括号初始化器列表来初始化聚合。如果初始化列表为空,则聚合的每个成员都被值初始化。

来自 C++03 [dcl.init.aggr]/8

... An empty initializer-list can be used to initialize any aggregate. If the aggregate is not an empty class, then each member of the aggregate shall be initialized with a value of the form T() (5.2.3), where T represents the type of the uninitialized member.

在您的示例中,std::string 成员应该默认初始化。

关于c++ - C++03 中的大括号初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26498086/

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