在建構函式中使用new時應注意的事項

2021-05-23 08:23:46 字數 775 閱讀 8291

1,如果在建構函式中使用new來初始化物件的指標成員時,應在析構函式中使用delete

2 ,new和delete要相容。new對應與delete new對應與delete

3, 如果有多個建構函式,則必須以相同的方式使用new 要麼都帶括號,要麼都不帶,因為只有乙個析構函式,因此所有的構造方法要相容。不過可以在乙個建構函式中使用new來初始化指標,而在另乙個建構函式中將指標初始化為空(null或者0)這是應為delete可以用於空指標

4,應定義乙個複製建構函式,通過深度複製函式將乙個物件初始化為另乙個物件,通常這種建構函式與下面類似

string::string(const string & st)

len =st.len;

str= new char[len +1];

std::strcpy(str,st.str0:

5具體的說,複製建構函式應分配足夠的空間來儲存複製的資料,並複製資料,而不僅僅是資料的位址,還更新所有的受影響的靜態類成員

6,應當定義乙個賦值操作符,通過深度複製將乙個物件複製給另乙個物件,通常與下面類似

string &  string::operator =(const string &str)

if(this ==&str) return *this;

delete this->str;

len =str.len;

this->str =new char[len+1];

std::strcpy(this->str,str.str);

return * this;

在建構函式中使用new時應注意的事項

在c 中使用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...