c 實現String類的注意要點

2021-10-03 15:44:47 字數 1038 閱讀 7929

自定義實現c++中的string型別。

通常c++ string的基本功能如下:

class

string

;

對上面的四個函式進行實現:

建構函式:

string::

string

(const

char

*str)

else

}

析構函式:

string::

~string

(void

)

拷貝建構函式:

string::

string

(const string &other)

賦值建構函式(這裡有很多注意事項

//第一種實現方法:

string & mystring::

operator=(

const string &other)

//這一種實現其實已經不錯了,但是會存在一定的隱患。

//就是一旦在賦值運算子函式丟擲乙個異常,mystring的例項就不再保持有效的狀態了,這就違背了異常安全性原則。

//比如,在new char[length + 1]空間不足時,就會出現異常,

//但是此時m_data已經delete掉了,不再是有效值了,也不能回滾到原來的值了。

//所以有了第二種實現方法:

string & string::

operator=(

const string &other)

return

*this;}

//解釋:建立乙個臨時變數strtemp,儲存other的值,再將strtemp值與例項自身m_data互換。

//由於strtemp是個區域性變數,出了了if作用域機會被釋放掉。

//這樣實現,即便出現異常,原有的值也不被銷毀。

c 實現的string類

普通版 class string else 拷貝建構函式 string const string str 引數為引用,如果為值的話 可能無限呼叫拷貝構造陷入死迴圈 pstr new char strlen str.pstr 1 賦值過載函式 string operator const string ...

C 中String類的實現

include include using namespace std class string else 拷貝建構函式 開闢跟源字串長度一樣長的空間給目標物件 string string s pstr new char strlen s.pstr 1 賦值運算子的過載 因為考慮到連續賦值的情況,故...

C 中String類的實現

原文 string是c 中的重要型別,程式設計師在c 面試中經常會遇到關於string的細節問題,甚至要求當場實現這個類。只是由於時間關係,可能只要求實現建構函式 析構函式 拷貝建構函式等關鍵部分。string的實現涉及很多c 的基礎知識 記憶體控制及異常處理等問題,仔細研究起來非常複雜,本文主要做...