C 拷貝建構函式和過載賦值函式

2021-07-10 17:24:46 字數 500 閱讀 7695

拷貝建構函式和過載賦值=的函式可以有效防止在淺複製過程中可能對於同一片記憶體釋放兩次的問題。

然而拷貝函式和過載複製=的函式很容易混淆。拷貝建構函式是在物件建立時呼叫的,而賦值函式只能被已經存在的物件呼叫。

乙個例子 類string的拷貝建構函式和賦值函式。

//拷貝建構函式

string::string(const string &other)

//賦值函式

string &string::operator = (const string &other)//一定要注意4個步驟都不能少,這就是區別拷貝建構函式和賦值函式的區別。

應用的例子是這樣的;

string a("hello");

string b("world");

string c = a;//這就時拷貝建構函式,注意不是賦值哦,其實應該寫成string c(a);才是標準的,這樣考的目的就是讓你容易混淆

c = b;這就是賦值函式,先釋放原來的記憶體,開闢新記憶體。

c 拷貝建構函式和賦值函式

準備實現gof上面乙個迭代器模式,用到了上面的list基本類,但是一直對賦值函式和拷貝建構函式不是很熟悉,就研讀了一下effective c 的關於這方面的一章,頗有收穫,抽取了我認為精華的部分分享給大家。由於一直對c 這一類的用法不是很熟悉,有錯誤或者優化或者需要特別強調的地方希望朋友們幫忙指出來...

C 拷貝建構函式和賦值函式

include using namespace std class string 建構函式 析構函式 賦值函式是每個類最基本的函式。每個類只有乙個析構函式和乙個賦值函式。但有很兩個建構函式,乙個為拷貝建構函式,其他為普通建構函式。對於乙個類,如果不編寫這四個函式,c 編譯器將自動為a產生四個預設函式...

拷貝建構函式和賦值建構函式

class cmystring 賦值建構函式 cmystring cmystring operator const cmystring str 新分配記憶體,將str的m pdata記憶體拷貝到m pdata中 m pdata new char strlen str.m pdata 1 strcpy...