当改变数据数组的顺序时,似乎data
总是由聚合初始化器(不是alter
)初始化的。为什么?
struct SqList
{
ElemType alter[MAXSIZE];
ElemType data[MAXSIZE];//swap order here
int Length;
};
编译器不应该将第一个有效内存块视为初始化目标吗?
首先,我有一个 SqList 类和一个重载的 operator<< 来打印内容。
struct SqList
{
ElemType data[MAXSIZE];
ElemType alter[MAXSIZE];
int Length;
};
ostream& operator<<(ostream& os,const SqList& sql)
{
for(auto i:sql.data)
os<<i<<" ";
os<<"\n";
for(auto i:sql.alter)
os<<i<<" ";
os<<"\n";
return os;
}
在 main() 中,使用聚合初始化器创建 SqList 的实例
int main()
{
SqList s{1,2,3,4,5};
cout<<s;
}
有趣的是,如果我交换data
和alter
in的顺序SqList
,data
总是被初始化为{1,2,3,4,5}
如果您有兴趣,这是代码。