我最近修复了我的一个应用程序中的一个错误:问题是驻留在堆栈上的一个对象有一个未初始化的字段。
该对象具有这种类型的类声明:
struct A{
int somefield, someotherfield;
A(): someotherfield(0) {}
}
并且在声明局部变量时(如A var;
在函数中),somefield
未初始化,因此读取它会返回一个随机值。
我确信没有出现在构造函数初始化列表中的类的字段将始终由合成的平凡构造函数初始化(在 int 的情况下,为零值)。显然我错了。
那么隐式字段初始化的一般规则是什么?