C++ 用大括号C++;
我读过很多关于用大括号初始化的解释:C++ 用大括号C++;,c++,object,initialization,C++,Object,Initialization,我读过很多关于用大括号初始化的解释: 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: pos
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{};
auto ac1 = ArrayClass{};
同
ArrayClass ac1 = ArrayClass{};
ArrayClass ac1 = ArrayClass{};
第二,
只有在构造函数中使用初始化列表时,才允许使用大括号吗
最后,如果我有参数,下面是正确的吗
auto ac1 = ArrayClass{1,4,"hi", true}
auto ac1 = ArrayClass{1,4,"hi", true};
谢谢你的帮助
auto ac1 = ArrayClass{};
在堆栈上进行分配,当堆栈消失时,该变量将自动清除
ArrayClass ac1 = new ArrayClass();
除非ArrayClass类型定义为指针,否则无效。无论如何,new ArrayClass()会在堆上分配内存,这些内存必须通过对其调用delete
进行显式清理
auto ac1=ArrayClass{}
同
ArrayClass ac1 = ArrayClass{};
ArrayClass ac1 = ArrayClass{};
ArrayClass ac1=ArrayClass{}
是。这种类型的初始化称为列表初始化。你可以在网站上阅读更多
我习惯于这样做
ArrayClass ac1 = new ArrayClass();
这是不正确的C++语法。您可以使用:
ArrayClass* acPtr = new ArrayClass();
首先是:
auto ac1 = ArrayClass{};
auto ac1 = ArrayClass{};
同
ArrayClass ac1 = ArrayClass{};
ArrayClass ac1 = ArrayClass{};
是的,是一样的
第二, 只有在构造函数中使用初始化列表时,才允许使用大括号吗 对
最后,如果我有参数,下面是正确的吗
auto ac1 = ArrayClass{1,4,"hi", true}
auto ac1 = ArrayClass{1,4,"hi", true};
您可以在以下情况下使用该语法:
ArrayClass
至少有四个成员,和第一个成员可以使用
1
、和初始化 第二个成员可以使用
4
、和初始化 第三个成员可以使用
“hi”
、和初始化 第四个成员可以使用
true
、和初始化 可以初始化任何其他剩余成员的值 您可以在上阅读有关值初始化的更多信息