class string { public: string(const char* str= nullptr); string(const string& other); ~string(void); string&operator=(const string& other); private: char* m_data; }; string::string(const char*str) { if(str== nullptr)//加上判断是否为空指针,是空指针就只分配一个char的位置并附上'\0' { m_data=new char[1]; *m_data='\0'; } else { int len=strlen(str); m_data=new char[len+1]; strcpy(m_data,str); } } string::~string(void) { delete[]m_data; //析构函数哟啊对动态分配的内存进行释放。 m_data= nullptr; } string::string(const string& other) { int len=strlen(other); m_data=new char[len+1]; strcpy(m_data,other.m_data); } string& string::operator=(const string &other) { if(&other==this) //一定要对传入的指针进行判断是否为自身的指针。 return *this; //注意这里的返回的this前要有* delete[]m_data; //这里在使用m_data 前是否要对原来的内存进行删除清空,再重新分配内存空间 int len=strlen(other); m_data=new char[len+1]; strcpy(m_data,other.m_data); return *this; }
编写 string成员函数
猜你喜欢
转载自blog.csdn.net/shantf93/article/details/79768835
今日推荐
周排行