自定義實現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 的基礎知識 記憶體控制及異常處理等問題,仔細研究起來非常複雜,本文主要做...