C++ 中,下面描述正确的是?

您所在的位置:网站首页 ai中分割下方对象描述错误的是 C++ 中,下面描述正确的是?

C++ 中,下面描述正确的是?

2023-11-27 16:18| 来源: 网络整理| 查看: 265

默认情况下,new分配的对象,不管是单个分配的还是数组中的,都是默认初始化的。这意味着内置类型或组合类型的对象的值是无定义的,而类类型对象将用默认构造函数进行初始化。

 

int *pi = new int; // undefined int *pia = new int[get_size()]; // undefined Object *pio = new Object; // invoke Object()

 

也可以对分配的对象进行显式值初始化,方法是在后面跟一对空括号,不过不支持对数组中对象初始化特定的值。

 

// ... means parameter list int *pi = new int(); // 0 int *pii = new int(1); // 1 int *pia = new int[get_size()](); // 0 0 0.. int *piaa = new int[2](...); // error: parenthesized initializer in array new Object *pio = new Object(...); // invoke Object(...) Object *pio = new Object[size](...); // error: parenthesized initializer in array new

 

另外C++ 11也提供了一个元素初始化器的花括号列表,支持对单个分配的和数组中的对象初始化为特定的值。

 

int *pi = new int{}; // 0 int *pii = new int{1}; // 1 int *pia = new int[get_size()]{}; // 0 0 0 .. int *piaa = new int[2]{2, 1}; // 2 1 Object *o = new Object{}; // invoke Object() Object *o = new Object{Object()}; // invoke Object() Object *o = new Object[size]{Object()..};// invoke Object()..

 

从上面可以看出,空括号相当于传参,而花括号其实相当于赋值。这也解释了为什么空括号不支持对数组中对象初始化特定的值,而花括号却可以。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3