Aber noch ein paar Tipps.
String String::operator= (char* s) {
hat den falschen Returntyp. Der op= returniert eine Referenz
String& String::operator= ( const char* s ) {
Wenn du C++ arbeitest, gewöhn dir von Anfang an an, const korrekt zu
arbeiten. Du willst einen konstanten String mittels op= an den String
binden. Dazu sollte das Argment auch const sein (dein ein String Literal
ist grundsätzlich const. Lediglich aus Abwärtskompatibilitätsgründen zu
altem C, wird es ausnahmsweise toleriert einen const char* an einen
char* zuzuweisen.)
In grundsätzlich jedem Konstruktur solltest du darauf achten, dass alle
Member Variablen initialisiert werden. Pointer auf NULL setzen!
Meine persönliche Meinung: Wenn in Memberfunktionen der this Pointer
benötigt wird, um kenntlich zu machen, dass man auf eine Membervariable
zugreift, dann sollte man sein Benamungsschema für Variablen überdenken.
Das deine String Klasse, sagen wir mal zweifelhaft ist, weisst du
wahrscheinlich selber. So wie sie zur Zeit ist, eignet sie sich nur
dazu, konstante Strings (also String Literale) zu verwalten.
In C++ benötigt eine Funktion genauso wie in C kein abschliessendes ;
char String::getChar(int index){
return (char) *(this->s+index);
}; <----- dieses ';' ist überflüssig
Aber alles das kann den Hänger nicht erklären.