劍指offfer面試題1 字串賦值運算子過載函式

2021-08-14 06:57:17 字數 1282 閱讀 7624

題目:以下是型別cmystring的宣告,請為該型別新增賦值運算子函式。

class cmystring

;

以下實現cmystring類中的成員方法:

標頭檔案:

#include 

#include //包含相容c的字串處理函式

using

namespace

std;

**實現:

//建構函式

cmystring::cmystring(char* pdata)

else

}//拷貝建構函式

cmystring::cmystring(const cmystring& str)

//析構函式

cmystring::~cmystring()

//賦值函式1:未考慮記憶體不足問題

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

delete m_pdata;

int length = strlen(str.m_pdata);

m_pdata = new

char[length+1];

//新標準

//strcpy_s(m_pdata,length+1,str.m_pdata);

strcpy(m_pdata,str.m_pdata);

return *this;

}//賦值函式2:先申請空間,後釋放原有記憶體。確保分配記憶體失敗時,原有的cmystring不會被修改。

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

return *this;

}//賦值函式3:先建立臨時例項,再交換臨時例項和原來的例項。利用區域性變數的生命週期來釋放原有內容。

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

return *this;

}//列印函式

void cmystring::print()

測試用例:

int main(int argc,char* argv)

測試結果:

text:hello world

str1:hello world

str2:hello world

str3:hello world

劍指offer 面試題28 字串的排列

題目描述 輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c 所能排列出來的所有字串abc,acb,bac bca,cab 和cba 題目分析 可以分成兩步。第一步求所有可能出現在第乙個位置的字元,即把第乙個字元和後面所有的字元交換。第二步固定第乙個字元,求後面...

劍指offer 面試題38 字串的排列

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。ps 輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。其實就是對字串全排列,然後放到 treeset 中。放到tre...

《劍指Offer》面試題28 字串的排列

劍指offer 面試題28 字串的排列 字串的全排列和組合演算法 遞迴輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則列印出字元a b c所排列出來的所有字串abc acb bac bca cab和cba。輸入乙個字串,輸出該字串中字元的所有組合。舉個例子,如果輸入abc,它的組合...