我需要为 MyString 类重载运算符 + 和 += 。
我的字符串.h
class MyString
{
char* m_pStr;
};
主要的
MyString s1("ABC"), s2("kkk");
MyString s("S");//GMV
s1 +=s;
s2 = s+s1;
stop
我的字符串.cpp
MyString MyString:: operator + (const MyString & rhs){
char * tmp = create_tmp_string(this->m_pStr, rhs.m_pStr);
return MyString(tmp);
};
MyString & MyString:: operator += (const MyString & rhs){
char * tmp = create_tmp_string(this->m_pStr, rhs.m_pStr);
return MyString(tmp);
};
char* MyString:: create_tmp_string(char * one, char * two){
int total_length = strlen(one) + strlen(two);
char * tmp = new char[total_length + 1];
tmp[0] = '\0';
strcat(tmp, one);
strcat(tmp, two);
return tmp;
}
我的问题是:
s2 = s+s1; // Working
s1 +=s; // Not working.
好吧,当我一步一步执行代码时:
MyString & MyString:: operator += (const MyString & rhs){
char * tmp = create_tmp_string(this->m_pStr, rhs.m_pStr);
return MyString(tmp);
};
tmp 原来是 SABC。但是 s1 将不包含 SABC 并且仍然持有 ABC。
你可以帮帮我吗?