1.預設建構函式分為帶引數和不帶引數兩種,在類物件宣告時,不能同時匹配兩個建構函式,否則會出錯!
2.複製建構函式:用於將乙個物件複製到新建立的物件中,其原型為:
class_name(const class_name &t)
3.深度複製:如果類物件有一字串成員char * str;,複製建構函式應當複製字串並將副本的位址賦給str成員,而不僅僅時複製字串位址。用於深度複製的建構函式又稱為顯式複製建構函式。
eg:
string :: string(const stringbad & st)
eg:
string :: string(const char * s)
5.如果在建構函式中使用new來初始化指標成員,則應在析構函式中使用delete。
6.new和delete必須相互相容匹配。new對應delete,new[ ]對應delete[ ].
7.如果有多個建構函式,則必須以相同方式使用new,統一使用new與delete、new[ ]與delete[ ]。因為只有乙個析構函式,所有的建構函式必須和它相對應相容。然而,可以在乙個建構函式中使用new初始化指標,而在另乙個建構函式中將指標初始化為空(0或c++11中的nullptr),只是因為delete可以用於空指標。
8.應定義乙個建構函式,通過深度複製將乙個物件初始化為另乙個物件。
eg:
string :: string(const stringbad & st)
9.應定義乙個賦值運算子,通過深度複製將乙個物件初始化為另乙個物件。
string & string::operator=(const string & st)
類和動態記憶體管理注意的幾個問題
1.預設建構函式分為帶引數和不帶引數兩種,在類物件宣告時,不能同時匹配兩個建構函式,否則會出錯!2.複製建構函式 用於將乙個物件複製到新建立的物件中,其原型為 class name const class name t 3.深度複製 如果類物件有一字串成員char str 複製建構函式應當複製字串並...
類和動態記憶體分配
part 1 靜態類成員特點 無論建立了多少物件,程式都只建立乙個靜態類變數副本。也就是說,類的所有物件共享乙個靜態成員。靜態資料成員在類宣告中宣告,在包含類方法的檔案中初始化。初始化時使用作用域運算子來指出靜態成員所屬的類。但如果靜態成員是const整數型別或列舉型,則可以在類宣告中初始化。par...
類和動態記憶體分配
整理自 c primer plus vector force1 50,60 vector force2 10,70 vector max max max force1,force2 version1 vector max const vector v1,const vector v2 version...