常见的C++面试题之String类

来源:互联网 发布:品质365 知乎 编辑:程序博客网 时间:2024/06/05 02:01


#include <iostream>class String{public:String();String(const char* pchData);String(const String &StringOther);String & operator = (const String &StringOther);~ String();void print();private:char *m_pchString;};String::String(){m_pchString = NULL;}String::String(const char* pchData){if((NULL == pchData) ||(0 == strlen(pchData))){m_pchString = new char [1];*m_pchString = 0;}else{int len = strlen(pchData)+1;m_pchString = new char[len];memset(m_pchString,0,len);strncpy(m_pchString,pchData,len - 1);}}void String::print(){if(m_pchString){printf("\n[%s]\n",m_pchString);}}String::String(const String & StringOther){if(NULL == StringOther.m_pchString){m_pchString = new char [1]; if(m_pchString ){*m_pchString = 0;                }else{//print error}}else{int len = strlen(StringOther.m_pchString)+1;m_pchString = new char[len];memset(m_pchString,0,len);strncpy(m_pchString,StringOther.m_pchString,len - 1);}}String &  String::operator = (const String &StringOther){if(this == &StringOther){printf("\nmyself\n");return *this;}if(NULL != m_pchString){delete m_pchString;m_pchString= NULL;}if(NULL == StringOther.m_pchString){m_pchString = new char [1];                if(m_pchString ){*m_pchString = 0;                }else{//print error}}else{int len = strlen(StringOther.m_pchString)+1;m_pchString = new char[len];if(m_pchString){memset(m_pchString,0,len);strncpy(m_pchString,StringOther.m_pchString,len - 1);}else{//print error}}return *this;}String::~String(){if(m_pchString != NULL){delete [] m_pchString;}}int main(){String a("11111"); a.print();        a = a;String b(a);b.print();        return 0;}




原创粉丝点击