#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没有默认构造函数之外的构造函数。
但这段代码编译,我想知道为什么。
答案 0 :(得分:3)
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;
}