宣告類時,類會自動生成預設複製運算子。原型如下:
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 複製建構函式應當複製字串並...