1. 程式人生 > >初始化列表和宣告的順序之間的關係

初始化列表和宣告的順序之間的關係

        類的資料成員的初始化順序是按照類內資料成員的宣告順序進行初始化的,這樣就可以減少不必要的開銷,這樣的話類就不必要為每一個物件進行跟蹤初始化資料成員,只需要按照類中的宣告順序進行初始化就可以了。

        如果允許上面的情況(即,成員按它們在初始化列表上出現的順序被初始化)發生,編譯器就要為每一個物件跟蹤其成員初始化的順序,以保證它們的解構函式以正確的順序被呼叫。這會帶來昂貴的開銷。所以,為了避免這一開銷,同一種類型的所有物件在建立(構造)和摧毀(析構)過程中對成員的處理順序都是相同的,而不管成員在初始化列表中的順序如何。

  另外,基類資料成員總是在派生類資料成員之前被初始化,所以使用繼承時,要把基類的初始化列在成員初始化列表的最前面。

  記住:初始化列表中成員列出的順序和成員在類內宣告的順序一致。