struct - 部分初始化跳过中间组件
struct - Partial initialize skipping middle components
假设我有一个 struct
具有以下形式
struct one {
double d;
char c1;
char c2;
int i;
};
我知道我可以像这样进行部分初始化
one s1={2.71,'e'};
只声明前两个组件的值,其他两个留空。但是,如果我只想初始化另一个 one
struct
的最后两个组件怎么办?我是不是被迫写
one s2={0.0,'[=12=]','a',42};
或者有什么方法可以让我只给出关于 c2
和 i
的说明,将 d
和 c1
的 NULL
初始化留给编译器?
我不知道你为什么要这样做,但是你可以定义一个构造函数,比如:
one( char c2Arg, int iArg ) : c2(c2Arg), i(iArg) {}
并这样称呼它:
one s1('a', 42);
与其让前两个成员未初始化,不如为它们分配默认值:
one( char c2Arg, int iArg ) : d(0.0), c1('[=12=]'), c2(c2Arg), i(iArg) {}
假设我有一个 struct
具有以下形式
struct one {
double d;
char c1;
char c2;
int i;
};
我知道我可以像这样进行部分初始化
one s1={2.71,'e'};
只声明前两个组件的值,其他两个留空。但是,如果我只想初始化另一个 one
struct
的最后两个组件怎么办?我是不是被迫写
one s2={0.0,'[=12=]','a',42};
或者有什么方法可以让我只给出关于 c2
和 i
的说明,将 d
和 c1
的 NULL
初始化留给编译器?
我不知道你为什么要这样做,但是你可以定义一个构造函数,比如:
one( char c2Arg, int iArg ) : c2(c2Arg), i(iArg) {}
并这样称呼它:
one s1('a', 42);
与其让前两个成员未初始化,不如为它们分配默认值:
one( char c2Arg, int iArg ) : d(0.0), c1('[=12=]'), c2(c2Arg), i(iArg) {}