直接初始化列表与复制初始化列表的区别:复制列表初始化不能使用标记为explicit的构造函数,而直接初始化列表可以。
class TestClass {
public:
explicit TestClass(int value) {
cout << "create from int" << endl;
}
TestClass(const char* value) {
cout << "create from const char*" << endl;
}
};
int main()
{
TestClass value1{ "123" };//正确,直接列表初始化
TestClass value2={ "123" };//正确,复制列表初始化
TestClass value3{ 123 };//正确,直接列表初始化
TestClass value4 = { 123 };//错误,复制列表初始化不能使用标记为explicit的构造函数
system("pause");
}