最近參加了實習招聘感覺自己的c++都快忘光了,其中面試過程中問到了string類的實現,需手寫實現一遍。現在再實現一下
class mystring
;inline mystring::mystring(char *str=null)
else
}inline mystring::~mystring()
}inline mystring::mystring(const mystring &a)//使用靜態的防止被修改 傳入引用是避免拷貝函式再調拷貝函式導致編譯出錯
else
}inline mystring & mystring::operator=(const mystring &a)//賦值運算子需要返回該型別的引用 這樣才能連續賦值
else
delete m_data;
m_data = new
char[strlen(a.m_data)+1];
strcpy(m_data,a.m_data);}}
else
return *this;
}std::ostream& operator
<<(std::ostream& os,const mystring & str)
提醒自己需要注意的幾點:
1. 過載賦值運算子的時候,要考慮到是否為自身,即(this與&a)的比較
2. 過載賦值運算子的時候,要返回返回該型別的應用,這樣就可以實現連續賦值
3. 拷貝構造函式引數需要是引用的,因為如果引數是例項,那麼從形參到實參會呼叫一次輔助建構函式,形成無休止的呼叫,造成編譯出錯。
4. 還有沒考慮到的就是new的時候可能會出現錯誤,所以在函式中可先例項乙個物件,然後再交換。
string類的實現
參考c primer.string類的實現,清翔兔 06,jan.includeusing namespace std class string string void private char m data inline string string const char str inline st...
String類的實現
學習資料結構寫了乙個string的類,貼出來求指教 ifndef string h h define string h h include include include define defaultsize 128 class string maxsize為傳入引數的string string c...
string類的實現
include using namespace std class string public string const char str 0 普通建構函式 string const string other 拷貝建構函式 string void 析構函式 string operator const...