+ Operator
-
Hi,
Als Übung habe ich eine String.h Klasse geschrieben. Soweit hat es funktioniert,
wenn man ein ObjektString s1("hello "), s2("world"), s3;
s1.print();anlegt, ist die Ausgabe "hello".
Aber wenn man so macht
String s1("hello "), s2("world"), s3;
s3 = s1 + s2;
s1.print();ist die Ausgabe
hello world
Segmentation faultWas passiert da?
Dankeclass String
{
private:
char *zeichenkette, hilfe;
size_t strlen_helper (char * zeichenkette)
{
if (zeichenkette == NULL)
return 0;
else
return strlen (zeichenkette);
}
public:
String(char *zeichenkette_ = "\0"):
zeichenkette(new char [strlen_helper(zeichenkette_) + 1])
{
strcpy (zeichenkette, zeichenkette_);
}~String()
{
delete [] zeichenkette;
}
String operator + (const String&);
void print();
};String String::operator+(const String& rhs)
{
return strcat(zeichenkette, rhs.zeichenkette);
}void String::print()
{
cout << zeichenkette << endl;
}
-
String s1("hello "), s2("world"), s3; //strlen(s1) == 6 strlen(s2) == 5 s3 = s1 + s2; //Nun wird versucht an die 6 Zeichen von s1 noch 5 anzuhängen -> Segmentation Fault s1.print();
-
Bei Klassen, die mit new/delete hantieren, braucht man außerdem einen Zuweisungsoperator und einen Kopierkonstruktor -> Buch oder Tutorial. Da kannst du auch gucken, ob die Regel der Großen Drei erwähnt wird.