類使用動態記憶體需注意的賦值運算子使用問題

2021-10-03 09:38:36 字數 826 閱讀 2225

宣告類時,類會自動生成預設複製運算子。原型如下:

class_name& class_name::

operator=(

const class_name &

);

1、賦值運算子何時使用:

class_name a = b;

//這種肯定呼叫複製建構函式,可能呼叫賦值運算子

具體講解如下:

2、存在問題

淺複製:對於new的動態記憶體指標成員,只複製了指標值,未開闢空間。同預設複製建構函式相同問題。

3、解決方法

自定義賦值運算子,實現深度複製(深拷貝)。

定義過載賦值運算子需考慮內容:

例子:

注:

深度複製需要訪問私有成員,可以訪問的原因:

c++中本類物件作為引數,可以直接訪問其私有成員:

詳細解釋

即,可在同一類內進行物件私有成員訪問操作;封裝性針對類外。

類的動態記憶體分配

1.靜態類成員 private char str int length static int objectnum 靜態資料成員,為所有的物件所共享 上例中的objectnum就是靜態類成員,它是所有物件所共享的,如下圖 在上例中,建立了三個物件,記憶體會給每個物件都分配資料單元用來儲存str和len...

類和動態記憶體管理注意的幾個問題

1.預設建構函式分為帶引數和不帶引數兩種,在類物件宣告時,不能同時匹配兩個建構函式,否則會出錯!2.複製建構函式 用於將乙個物件複製到新建立的物件中,其原型為 class name const class name t 3.深度複製 如果類物件有一字串成員char str 複製建構函式應當複製字串並...

類和動態記憶體管理注意的幾個問題

1.預設建構函式分為帶引數和不帶引數兩種,在類物件宣告時,不能同時匹配兩個建構函式,否則會出錯!2.複製建構函式 用於將乙個物件複製到新建立的物件中,其原型為 class name const class name t 3.深度複製 如果類物件有一字串成員char str 複製建構函式應當複製字串並...