首先,我发现术语“初始化列表”用于两个看似不同的事物:使用像Foo foo{1}
这样的花括号初始化类,并使用Foo::Foo(int test) : m_test(test)
语法编写构造函数。这两个是连通的还是我只是混在一起?
现在是我的实际问题。 I've read请注意,花括号初始化不允许缩小。但是,那不是唯一的区别。
struct Test {
int one;
int two;
};
int main() {
Test test{1, 2};
}
即使未声明Test::Test(int,int)
,此代码也有效。那么花括号初始化与普通初始化究竟有何不同?它只是语法糖还是存在它的更深层次原因?