我已经阅读了很多关于使用花括号进行初始化的解释:
PhoneNumber homePhone = {858, 555, 1234};
也
int x2 = val; // if val==7.9, x2 becomes 7 (bad)
char c2 = val2; // if val2==1025, c2 becomes 1 (bad)
int x3 {val}; // error: possible truncation (good)
char c3 {val2}; // error: possible narrowing (good)
char c4 {24}; // OK: 24 can be represented exactly as a char (good)
char c5 {264}; // error (assuming 8-bit chars): 264 cannot be
// represented as a char (good)
但是,我在这里遇到了一些无法找到示例的代码,也许我不知道该术语,所以我可以对其进行谷歌搜索:
auto ac1 = ArrayClass{};
我已经习惯了
ArrayClass ac1 = new ArrayClass();
首先是:
auto ac1 = ArrayClass{};
与...相同
ArrayClass ac1 = ArrayClass{};
第二,
如果我在构造函数中使用了初始化列表,是否只能使用花括号?
最后,如果我有参数,以下内容正确吗?
auto ac1 = ArrayClass{1,4,"hi", true}
感谢您的帮助
最佳答案
这种初始化方式称为列表初始化。您可以在http://en.cppreference.com/w/cpp/language/list_initialization上阅读更多内容。
那是不正确的C++语法。您可以使用:
ArrayClass* acPtr = new ArrayClass();
是的,是一样的。
是的。
您可以在以下情况下使用该语法:
ArrayClass
至少有四个成员和可以使用
1
,和初始化第一个成员可以使用
4
,和初始化第二个成员可以使用
"hi"
,和初始化第三个成员可以使用
true
,和初始化第四个成员其余的任何其他成员都可以进行值初始化。
您可以在http://en.cppreference.com/w/cpp/language/value_initialization上了解有关值初始化的更多信息。