成员须在声明处或构造时初始化
8.10 ID_memberInitialization
成员的声明和使用相距较远,更容易造成未初始化先使用的问题,所以应在声明处或构造函数中初始化所有成员。
示例:
struct A {
int x;
int y = 0;
int z;
A(int i): x(i) { // Non-compliant, Missing the initialization for ‘z’
}
};
例中构造函数没有对 z 初始化是不符合要求的,尤其是 public 成员出现这种问题时会造成更大的风险。
建议所有成员都在声明处初始化:
struct A {
int x = 0; // Good
int y = 0; // Good
int z = 0; // Good
A(int i): x(i) { // Compliant
}
};