C 物件初始化

2021-08-09 02:03:12 字數 561 閱讀 9817

形式:

[new] t [object] ;
值初始化形式:

[new]

t[object]

{};

預設初始化形式:

[new] t object;
二者區別:

- 只要使用了括號(圓括號或花括號),就是值初始化。可以簡單理解為括號提醒編譯器你想要用某個值賦給物件。沒有使用括號,就是預設初始化。可以簡單理解成,你不加任何東西,編譯器就會使用預設的行為。

- 預設初始化:總是試圖使用預設建構函式初始化物件。但是它對於pod型別則不這麼做。比如:c基本型別,聚合型別,pod型別的陣列。c語言的struct以及基本型別如果不初始化也是隨機的值,和這個pod型別在c++類似。我們可以簡單理解為:總使用預設建構函式,同時相容c。值初始化:有使用者定義建構函式,就執行使用者定義的建構函式,否則都使用零初始化。

直接使用建構函式進行初始化。

使用等號,要求編譯器將右側運算物件拷貝到正在建立的物件中,呼叫拷貝建構函式。

參考資料:

物件初始化

在oc中使用alloc後,會分配到一塊記憶體塊,同時這塊記憶體塊會被清零,所以初始化函式init是不需要再做置零的操作的。在oc中,應該在alloc後就呼叫初始化函式init,使用new可以達到這個效果,但new不是oc的風格。物件在init時,應該先使用其父類的init,然後再使用自己的init行...

物件初始化

我們知道當使用new關鍵字建立乙個物件的時候,會呼叫相應的建構函式對該物件進行初始化,那麼這個過程中到底都還有什麼事情呢?先看一段 當執行語句 student stu new student zhangsan 17 執行該語句的時候在記憶體中程式都做了什麼事情,讓我們一一枚舉出來 1 因為new用到...

物件初始化

每乙個物件都應該在建立之時就有確定的內容,否則就失去了物件的意義了。定義乙個物件,在系統為其分配記憶體時,應該同時對有關的資料成員賦初始值。首先,不能在類宣告中對資料成員初始化。因為類不是實體,而是抽象型別,不占用記憶體而無處容納資料。如果類中資料為私有或受保護的,則不能在定義物件時賦初值。time...