C 探幽 實現乙個簡單的string類

2021-10-10 15:37:24 字數 684 閱讀 5020

class mystring

;mystring::mystring(const char* p=null)

else

}mystring::mystring(const mystring &str)//需要實現深拷貝

else }

mystring &mystring::operator = (const mystring &str)

int len = strlen(str.data);

data = new char[len + 1];

strcpy(data, str.data);

return *this;

}mystring::~mystring()//釋放記憶體

}

注意建構函式:傳進來的變數要拷貝到類的私有變數中,不能直接使用指標賦值的方式,而需要為類的char*指標開闢記憶體並拷貝;

拷貝建構函式:拷貝建構函式也是需要注意深拷貝的問題,要重新為自身的私有指標分配記憶體,然後拷貝;

過載運算子=:過載運算子包括兩個步驟,首先是清除本物件內的指標的內容,然後是將傳進來的物件的內容拷貝過來(同樣也是深拷貝),但是需要注意a=a的情況,因為如果不判斷a=a的情況,上述清除本物件內的字串指標就會將a的指標清空,此時,會出現嚴重的錯誤。

析構函式:注意清除指標

這篇講的很詳細

C 實現乙個簡單的unordered map

無序關聯容器的底層是乙個鏈式雜湊表,包括下列四種 無序關聯容器 特點unordered set 無序集合,只儲存key且不允許重複 unordered multiset 無序多重集合,只儲存key且允許重複 unordered map 無序對映表,儲存key value且不允許重複 unordere...

乙個簡單位的C 類實現

這個例子的編譯環境是vc 6.0,所以每個cpp檔案都要帶頭檔案為 include stdafx.h 這個例子共用到3個檔案,乙個標頭檔案,乙個原始檔,乙個main檔案。如下所示 test.h ifndef fraction h define fraction h include using nam...

c 實現乙個簡單的迴圈佇列

實現乙個迴圈佇列 佇列的特點就是先進先出,尾插頭出。涉及到迴圈,無論是陣列還是鍊錶,重點在於取餘!防止溢位。例如陣列大小為5,當隊尾為4時,且 隊頭!隊尾 再入隊後,隊尾應改變為0,需用取餘。include using namespace std class queue 析構函式 queue 拷貝構...