在c++中使用new來初始化物件的指標成員時必須注意如下事項:
1. 如果在建構函式中使用new來初始化指標成員,則應在析構函式中使用delete來釋放。
2. new和delete必須相互相容,new對應與delete、new [ ]對應於delete [ ]。
3. 如果存在多個建構函式,則必須以相同的方式使用new,要麼都用new,要麼都用new [ ],因為只有乙個析構函式,因此所有的建構函式都必須與它相容。不過,可以在乙個建構函式中用new來初始化指標,而在另外乙個建構函式中將指標初始化為空(null 或0),只是因為delete (無論是帶中括號還是不帶中括號)可以用於空指標。
4. 應定義乙個複製建構函式,通過深度複製將乙個物件初始化為另乙個物件。通常這種建構函式與下面的類似:
string::string(const string & st)
具體的說就是複製建構函式應分配足夠的空間來儲存複製的資料,並複製資料,而不是僅僅是資料的位址。
5. 應當定義乙個賦值操作符,並通過深度複製將乙個物件複製給另乙個物件。通常該方法與下面的類似:
string & string::operator=( const string & st )
具體的說,該方法應完成這些操作:檢查自我賦值的情況,釋放成員指標以前指向的記憶體,複製資料而不僅僅是資料位址,並且返回乙個指向呼叫物件的引用。
在建構函式中使用new時應注意的事項
1,如果在建構函式中使用new來初始化物件的指標成員時,應在析構函式中使用delete 2 new和delete要相容。new對應與delete new對應與delete 3,如果有多個建構函式,則必須以相同的方式使用new 要麼都帶括號,要麼都不帶,因為只有乙個析構函式,因此所有的構造方法要相容。...
malloc 函式在keil中使用應注意什麼
在keil 中使用malloc 函式經常會遇到不正常的情況,通常表現為不能正確分配記憶體 空間,或者只能分配很小的空間。出現這個問題的原因大概有三個 1 所用的arm 晶元本身記憶體已經被其 占用,所餘空間不夠malloc分配。解決辦法 a 釋放其他 浪費的ram空間 b 擴容。2 未進行堆的初始化...
JS 建構函式在 new 時做了啥?
1 var obj 建立乙個臨時物件 2 obj.proto people.prototype 將該臨時物件原型指向建構函式原型 3 people.call obj,孫悟空 將建構函式中 this 指向臨時物件,並傳入引數 孫悟空 4 return obj 返回臨時物件,person 指向建立的 o...