的C++運算符我有一個字符*問題,字符串相加 例如像這樣:實現串
enter code here
s2 = s3 + "," + s1;
和我有三個運營商下面
friend Mystring operator+(const Mystring &lhs, const Mystring &rhs); -- 1
friend Mystring operator+(const Mystring &mystr, const char *ch); -- 2
friend Mystring operator+(const char *ch, const Mystring &mystr); -- 3
,但我用1和3它會崩潰,但我使用1和3可以做得很好。
我的問題是順序不是s3 +「,」所以先用運算符w先用 ,結果使用運算符3,但事實並不如我想象的那樣。
任何人都可以解釋爲什麼會發生這種情況?
Mystring operator+(const Mystring &mystr,const char *ch)
{
Mystring tmp;
tmp.str_ = new char[ strlen(mystr.str_)+2 ];
strcpy(tmp.str_, mystr.str_);
strcat(tmp.str_, ch);
return tmp;
}
Mystring operator+(const char *ch, const Mystring &mystr)
{
Mystring tmp;
tmp.str_ = new char[ strlen(mystr.str_)+strlen(mystr.str_)+1 ];
strcpy(tmp.str_, mystr.str_);
strcat(tmp.str_, mystr.str_);
return tmp;
}
Mystring operator+(const Mystring &lhs, const Mystring &rhs)
{
Mystring tmp;
tmp.str_ = new char[ strlen(lhs.str_)+strlen(rhs.str_)+1 ];
strcpy(tmp.str_, lhs.str_);
strcat(tmp.str_, rhs.str_);
return tmp;
}
你可以發佈每個運算符的定義以及你得到的確切錯誤嗎? – MGZero
你的問題不清楚。 「我使用1和3它會崩潰,但我使用1和3可以做得很好」是什麼意思? –
「Mystring」的定義是什麼? –