C 入門系列 拷貝建構函式 拷貝賦值函式

2021-07-10 17:55:14 字數 903 閱讀 5746

1.什麼是拷貝建構函式?什麼時候使用拷貝建構函式?

第乙個引數為自身型別引用的建構函式。

比如

class foo;
在以下情況中被使用:

- 拷貝初始化(用=定義變數)

foo b; foo a=b;

- 函式引數採用值傳遞而不是指標傳遞時

foo a(b);

- 返回型別為非引用型別的函式返回乙個物件

foo example()// b為foo型別

2.為什麼拷貝建構函式的第乙個引數要是引用?

如果不是引用的話,在引數值傳遞時會呼叫另乙個拷貝建構函式,然後開始進入死迴圈。

用在比如

foo a,b;   //已呼叫預設建構函式初始化

a=b; //拷貝賦值函式

定義:型別為foo的型別的拷貝賦值函式定義為

foo& operator=(const foo&)

其中返回值為引用型別的目的,是為了使使用者自定義型別能夠和內建型別一樣,能夠連續賦值。比如a=b=c;

應當注意的是,預設拷貝賦值只是簡單的挨個賦值,在有些時候,不能使用預設拷貝函式,否則會出現編譯錯誤。

比如

class foo

foo a,b;

b=a;

//上面那一句話明顯是錯誤的,因為如果正確的話,那就意味著我們能夠對引用,const重新賦值,以及能夠直接獲取到類的私有成員,這顯然是錯誤的。

C 賦值構造拷貝

對於初始化 構造 和賦值的概念 初始化 構造 建立乙個新的物件的時候 賦值 修改已有物件中的值 初始化 賦值 int a 5 初始化 int b a 6 賦值 初始化 test3 t 6 構造 test3 t2 t 2 賦值 拷貝構造class test3 賦值函式 test3 operator i...

C 建構函式例項 拷貝構造,賦值

define crt secure no warnings windows系統 include include include using namespace std class student student operator const student s student const stude...

拷貝建構函式 賦值函式

1.編寫類string的建構函式 析構函式和賦值函式。已知類string的原型為 class string 編寫string的上述四個函式 1 string的析構函式 string string void 2 string的建構函式 string string const char str else...