在C++14中,如果想避免对字段进行零初始化,可以使用花括号初始化列表或者构造函数的初始值列表来进行初始化。
以下是使用花括号初始化列表的示例代码:
#include
class MyClass {
public:
int myField;
MyClass() {} // 默认构造函数,不进行零初始化
MyClass(int value) : myField(value) {} // 使用构造函数的初始值列表进行初始化
};
int main() {
MyClass obj1{}; // 使用花括号初始化列表,默认构造函数不进行零初始化
MyClass obj2{42}; // 使用花括号初始化列表,调用带参数的构造函数进行初始化
std::cout << obj1.myField << std::endl; // 输出随机值
std::cout << obj2.myField << std::endl; // 输出42
return 0;
}
在上述示例中,使用花括号初始化列表{}
来创建对象obj1
时,会调用默认构造函数进行初始化,而默认构造函数中没有对字段进行零初始化,所以字段的值是随机的。
使用花括号初始化列表{42}
来创建对象obj2
时,会调用带参数的构造函数进行初始化,构造函数的初始值列表myField(value)
将字段myField
初始化为42。
通过这种方式,可以避免在C++14中对字段进行零初始化。
上一篇:避免在C#中使用魔术字符串
下一篇:避免在C++模板函数中重复的代码