物件初始化

2021-05-26 08:11:19 字數 766 閱讀 5929

在oc中使用alloc後,會分配到一塊記憶體塊,同時這塊記憶體塊會被清零,所以初始化函式init是不需要再做置零的操作的。

在oc中,應該在alloc後就呼叫初始化函式init,使用new可以達到這個效果,但new不是oc的風格。

物件在init時,應該先使用其父類的init,然後再使用自己的init行為。而物件在dealloc時則相反,先是自己dealloc,然後才是

父類dealloc。

可能會過載多個init方法,這時應該有乙個指定初始化函式(這個函式應該實現所有例項變數的初始化),然後其它init方法均調

用這個指定初始化函式。

物件在init時,務必把super的init返回值賦值給self,我們最終使用的物件是init返回的物件(而分配到的物件可能與init返回的

物件不相同)。

在c++中,有一種習慣的做法:在建構函式中new出所有成員物件,然後在析構函式中delete所有成員物件。這個做法操作簡單,但

很不靈活。比如程式在啟動時需要new出所有必需的物件,如果這些必需物件的建構函式裡面又new了一些其它的非必需立即就建立

的物件(甚至這些成員物件在構造的時候做了一些io或網路的操作),這就很可能嚴重影響到程式的啟動速度。

所以我比較主張,在建構函式和析構函式裡面不要new或delete其它的成員變數,同時提供相應的create/destroy函式,讓物件在需

要的時候建立或銷毀其成員變數。

在oc中也一樣,你可以在init中new出所有的例項變數,但也可以在需要的時候再去做這樣的事(主張使用這種方式)。

物件初始化

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

物件初始化

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

物件初始化

今天被朋友問到物件初始化的內容,那就正好分享一波!貼出來乙個例子先。public class employee public employee string name public static void main string args 物件的初始化是乙個很常見的問題,那麼思考一下上圖具體的執行順...