gpt4 book ai didi

c++ - 直接使用初始化列表初始化只有一个数组作为成员的结构是否合法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:12 25 4
gpt4 key购买 nike

#include <iostream>

class vec
{
public:
int arr[2];
};


int main()
{
vec a = { { 1,2 } };// works
vec b = { 1,2 };// works too ,but why ?
std::cin.get();
}

vec 除了默认构造函数外没有其他构造函数。

但是这段代码编译通过了,我想知道为什么。

http://ideone.com/uyx98o

最佳答案

Aggregate initialization太棒了,你甚至不需要获得正确的嵌套就可以让它工作,而且你还可以提供比成员更少的值:

#include <iostream>
#include <string>

struct A {
struct { int a; std::string b[3]; } a;
double b, c;
};

int main() {
A a = { 10, "a", "b", "c", 3.1415 };
std::cout << a.a.a << " " << a.a.b[0] << " " << a.a.b[2]
<< " " << a.b << " " << a.c;
}

Live

关于c++ - 直接使用初始化列表初始化只有一个数组作为成员的结构是否合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41389372/

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