如果類使用new運算子來分配類成員指向的記憶體,在設計時應採取一些預防措施(應牢記這些規則,這是因為編譯器並不知道這些規則,因此無法發現錯誤)
• 對於指向的記憶體是由new分配的所有類成員,都應在類的析構函式中對其使用delete,該運算子將釋放分配的記憶體;
• 如果析構函式通過對指標類成員使用delete來釋放記憶體,則每個建構函式都應當使用new來初始化指標,或將它設定為空指標;
• 建構函式中要麼使用new,要麼使用new,而不能混用。如果建構函式使用的是new,則析構函式應使用delete;如果建構函式使用的是new,則析構函式應使用delete。
• 應定義乙個分配記憶體(而不是將指標指向已有的記憶體)的複製建構函式。這樣程式將能夠將類物件初始化為另乙個類物件,這種建構函式的原型一般如下:
classname
(const classname &
)
• 應定義乙個過載複製運算子的類成員函式,其函式定義如下,(其中c_pointer是c_name的類成員,型別為指向type_name的指標)。
c_name & c_name::
operator=(
const c_name & cn)
c 中的new 類建構函式 new
我們都知道在例項化乙個類時會使用這個類的 init 方法,但是在真實情況中類的例項化是分成兩個階段的,第一階段是使用該類的 new 方法例項化乙個物件,第二階段才是使用物件的 init 方法進行初始化。由於很多時候,第乙個階段被我們忽略了,所以看起來例項化類時只使用了 init 方法。既然在例項化類...
何時使用建構函式,建構函式使用new關鍵字
關於何時使用js的建構函式 一般建立多個有相同屬性 方法的物件,就會去寫建構函式,就會去new 如果只是乙個單獨的物件,直接使用字面量就行了 var person js建構函式建立物件加new問題 new操作符做了些什麼呢 1 建立乙個新物件 2 將建構函式的作用域賦給新物件 因此 this 就指向...
new與建構函式
function cat name,age 機制1 每乙個函式物件都有乙個prototype物件 console.log cat.prototype node輸出 cat.prototype.get name function 機制2 new關鍵字 建構函式 step1 建立了乙個新的物件 該物件預...