string類的內部實現

2021-08-01 23:58:39 字數 1197 閱讀 2426

實現string類是一道常見初級c++程式設計師的面試題,下面來具體介紹實現過程。

已知string的原型**如下。從下圖程式可以看出,string類的底層是乙個字元指標。

class string

(1)普通建構函式實現過程

string::string(const char* str)

else

}

普通建構函式注意的是,傳入的是個char*型別的字串。如果傳入的str是個空字串,那麼直接用\0賦值。

(2)string類的析構函式

string::~string()

}

(3)拷貝建構函式

string::string(const

string &another)

m_data=new char[strlen(another.m_data)+1];

strcpy(m_data,another.m_data);

}

拷貝建構函式裡要注意的是,傳入的引數是乙個常引用,這樣可以不用增加乙個棧變數和引數內容可以保持不變,不被修改。

(4)賦值函式

string::string::operator =(const string &another)

else

}return *this;

}

賦值函式需要注意的是,如果傳入的引數內容已與本身一致,則不需要賦值(常量區特性)。

(5)字串連線

string& string::operator +(const string &another)

else

if(!m_data)

else

return newstring;

}

字串連線函式裡面分三種情況:傳入引數為空,本身為空,或兩者都不為空。

(6)判斷相等

bool string::operator ==(const string &another)

else

}

先判斷長度是否一致,再判斷內容是否相等。

(7)返回長度

int string::getlength()

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...