String類的建構函式、解構函式、拷貝建構函式、賦值運算子過載
阿新 • • 發佈:2019-02-17
面試碰到的題,答案來自網路搜尋。
class myString{ private: char* m_data; public: myString(const char *str=NULL); myString(const myString &other); ~myString(); myString operator=(const myString &other); showString(); }; myString::myString(const char *str/* =NULL */) { if (str==NULL) { m_data = new char[1]; *m_data = '\0'; } else { int len = strlen(str); m_data = new char[len+1]; strcpy(m_data, str); } } myString::myString(const myString &other) { int len = strlen(other.m_data); m_data = new char[len+1]; strcpy(m_data, other.m_data); } myString::~myString() { delete []m_data; } myString myString::operator=(const myString &other) { if (this == &other) { return *this; } else { delete []m_data; int len = strlen(other.m_data); m_data = new char[len+1]; strcpy(m_data, other.m_data); return *this; } } myString::showString(){ cout<<m_data<<endl; }