16,472
社区成员
发帖
与我相关
我的任务
分享
const string string::operator+(const string &str)
{
return string(*this)+=str;
}
#include <iostream>
class string {
public:
string (const char *ch=NULL);
string (const string &str);
~string();
const string operator + (const string &str);
string &operator += (const string &str);
friend std::ostream& operator<<(std::ostream &out,const string &str);
int Length()const;
private:
char *pch;
};
string::string(const char *ch)
{
if(ch)
{
pch = new char [strlen(ch)+1];
strcpy(pch,ch);
}
else
pch = NULL;
}
string ::string(const string &str)
{
pch = new char[str.Length()+1];
strcpy(pch,str.pch);
}
string ::~string()
{
if(pch)
{
delete []pch;
pch = NULL;
}
}
string &string::operator+=(const string &str)
{
string temp(*this);
delete []pch;
pch = new char[temp.Length()+str.Length()+1];
strcpy(pch,temp.pch);
strcat(pch,str.pch);
return *this;
}
const string string::operator+(const string &str)
{
return string(*this+=str);
}
int string::Length()const
{
if(pch)
return strlen(pch);
return 0;
}
std::ostream& operator<<(std::ostream &out,const string &str)
{
out<<str.pch;
return out;
}
int main()
{
string str("I love");
//if((str+"c++") = "") 返回重载+返回const的原因,不返回const 这句也正确
std::cout<<str+" c++"<<std::endl;
return 0;
}