C++ 数组类型(C+;+;)的初始化
根据,列表初始化的效果之一是: 如果T是聚合类型,则执行聚合初始化 由于数组是聚合类型,当我初始化数组时,C++ 数组类型(C+;+;)的初始化,c++,arrays,initialization,C++,Arrays,Initialization,根据,列表初始化的效果之一是: 如果T是聚合类型,则执行聚合初始化 由于数组是聚合类型,当我初始化数组时,int数组[3]={1,2}, 我相信发生的是 列表初始化 聚合初始化 复制初始化,其中1、2是从初始化器列表的相应子句复制初始化的 剩余值已值初始化(零初始化) 这对我来说很有意义,因为数组的值将是 {1,2,0} 然而,当我继续阅读时,我注意到列表初始化的另一个效果是: 如果T是聚合类型,并且初始值设定项列表有一个 相同或派生类型(可能是cv限定)的元素 对象从该元素初始化(通过复制初始
int数组[3]={1,2}代码>,
我相信发生的是
列表初始化
聚合初始化
复制初始化,其中1、2是从初始化器列表的相应子句复制初始化的
剩余值已值初始化(零初始化)
这对我来说很有意义,因为数组的值将是
{1,2,0}
然而,当我继续阅读时,我注意到列表初始化的另一个效果是:
如果T是聚合类型,并且初始值设定项列表有一个
相同或派生类型(可能是cv限定)的元素
对象从该元素初始化(通过复制初始化
复制列表初始化,或通过直接初始化
直接列表初始化)
声明一个数组int数组[3]={1}代码>当“初始值设定项列表有一个元素”时,与有多个元素时的过程不同?(即int数组[3]={1,2};
)?这对我来说毫无意义,但我不确定我遗漏了什么。正如引用所述,这种效果不会被应用
如果T是聚合类型,并且初始值设定项列表有一个相同或派生类型(可能是cv限定的)的单个元素,则从该元素初始化对象(通过复制初始化进行复制列表初始化,或通过直接初始化进行直接列表初始化)
给定int数组[3]={1}
,{1}
有一个1
类型为int
,它不是数组类型的相同或派生类型int[3]1
与int[3]
的类型不同,因此该子句在这里不适用。例如st;S={t}代码>其中S
是一个聚合类