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...