2012-06-04 41 views
3

我最近修復了我的一個應用程序中的一個錯誤:問題是駐留在堆棧上的對象有一個字段未初始化。有關隱式字段初始化的規則

對象有這種類型的類聲明:

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

和(在一個函數像A var;)聲明一個局部變量時,somefield留下未初始化的,所以它的讀取將返回randomish值。

我確定類的字段不會出現在構造函數的初始化列表中,它總是會被合成的簡單構造函數初始化(如果是int,則爲零值)。顯然我錯了。

那麼隱式字段初始化的一般規則是什麼?

回答

4
  • 類和結構是由構造器初始化
  • 基本類型int雙字符短...不被初始化,並且包含隨機數
  • 指針不被初始化,並指向類
  • 陣列隨機位置或結構導致每個元素被其構造函數初始化
  • 基本類型或指針的數組是隨機的。
+0

數組呢?每個元素都有相同的規則? –