私自身の "String"クラスを作成しようとしています。しかし、私は演算子+のオーバーロードに問題があります。私はオペレータ+ =を作って、うまくやって友人のオペレータ+を作って、時には私の計画通りに動かないことがあります。オーバーロード文字列演算子+
String()
{
length = 0;
p = new char[1];
p[0] = '\0';
}
String(const char*s)
{
length = strlen(s);
p = new char[length+1];
strcpy(p, s);
}
String(const String& s)
{
if (this != &s)
{
length = s.length;
p = new char[s.length + 1];
strcpy(p, s.p);
}
}
~String()
{
delete[]p;
};
String &operator+=(const String&s1)
{
String temp;
temp.length = length + s1.length;
delete[]temp.p;
temp.p = new char[temp.length + 1];
strcpy(temp.p, p);
strcat(temp.p, s1.p);
length = temp.length;
delete[]p;
p = new char[length + 1];
strcpy(p, temp.p);
return *this;
}
friend String operator+(const String &s1, const String &s2)
{
String temp1(s1);
temp1 += s2;
return temp1;
}
私はこのようにoperator +を使用しています:String c = a + b;すべては計画どおりに動作しますが、もしa = a + bと書くと、私はエラーを取得するString.exeがブレークポイントを引き起こした。何を修正すべきですか? /////問題のオーバーロード演算子を解決しました=ありがとう!ラインで
あなたはthis'と 's1'は、同じ文字列 –
@EdHeal HMある私は+ = Aを使用する場合、'、私は正しい働くケースを考えがあります。 – Vladislav
'temp1 + = s1;'を 'temp1 + = s2;'に変更します。 – songyuanyao