3

我最近修复了我的一个应用程序中的一个错误:问题是驻留在堆栈上的一个对象有一个未初始化的字段。

该对象具有这种类型的类声明:

struct A{
    int somefield, someotherfield;
    A(): someotherfield(0) {}
}

并且在声明局部变量时(如A var;在函数中),somefield未初始化,因此读取它会返回一个随机值。

我确信没有出现在构造函数初始化列表中的类的字段将始终由合成的平凡构造函数初始化(在 int 的情况下,为零值)。显然我错了。

那么隐式字段初始化的一般规则是什么?

4

1 回答 1

4
  • 类和结构由构造函数初始化
  • 基本类型 int double char short ... 未初始化且包含随机数
  • 指针未初始化并指向随机位置
  • 类或结构的数组导致每个元素由其构造函数初始化
  • 基本类型或指针的数组是随机的。
于 2012-06-04T08:53:52.540 回答