我今天遇到了这种行为,但我找不到它起作用的原因。
struct MyStruct {
int x;
int y;
};
MyStruct foo = 1;
error: conversion from ‘int’ to non-scalar type ‘MyStruct’ requested
struct MyStruct {
int x;
int y;
MyStruct(int x) : x(x) {
//
}
};
MyStruct foo = 1;
为什么C++知道如何使用这个构造函数?难道它不应该仍然有一个编译器错误,说我无法将 int 分配给结构吗?为什么我不需要
MyStruct foo = MyStruct(1);
?
原始类中没有来自
int
的转换构造函数,但由于它是聚合,因此可以使用大括号初始化:
struct MyStruct {
int x;
int y;
};
MyStruct foo{1}; // initializes x with 1