初始化C++结构

Ste*_*gle 0 c++ struct initialization

这两种方式初始化结构之间是否存在差异:

structVar = {}
Run Code Online (Sandbox Code Playgroud)

structVar = {0}
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 5

这实际上取决于结构的性质.

如果它是一个聚合体,那么这两者基本上是等价的.但是,第一个是通用的,因为它只是对结构进行值初始化.第二个要求struct的第一个成员可以初始化0,并初始化其余的元素,就好像它们每个都由一个空的初始化器初始化{},换句话说,

structVar = {0, {}, {}, {}, ..... };
Run Code Online (Sandbox Code Playgroud)

所以每个剩余的元素都是值初始化的.

如果它不是聚合,那么它取决于提供的构造函数(如果有的话).根本没有足够的信息可以说.