Salve a tutti. Perchè quando eseguo questo programma la finestra di esecuzione del dos si apre e chiude istantaneamente. Dov'è il problema? Si tratta di una semplice classe stringa!
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
class Stringa
{
private:
char *ch; // puntatore alla stringa
int lunghezza; // lunghezza della stringa
public:
Stringa() : ch(0), lunghezza(0) {}
Stringa (const char *st) { ch = new char[strlen(st)+1]; strcpy(ch,st); }
Stringa (const Stringa& s);
~Stringa();
Stringa& operator = (const Stringa& s);
Stringa& concat (const Stringa& s);
void stampa() const { cout << ch << endl; }
};
Stringa :: Stringa (const Stringa& s)
{
lunghezza = s.lunghezza;
ch = new char [strlen(s.ch)+1];
strcpy(ch,s.ch);
}
Stringa :: ~Stringa() { delete [] ch; }
Stringa& Stringa :: operator = (const Stringa& s)
{
lunghezza = s.lunghezza;
delete [] ch;
ch = new char [strlen(s.ch)+1];
strcpy(ch,s.ch);
return *this;
}
Stringa& Stringa :: concat (const Stringa& s)
{
lunghezza = lunghezza + s.lunghezza;
char *temp = new char [lunghezza + 1];
strcpy(temp,ch);
strcat(temp,s.ch);
delete [] ch;
ch = temp;
return *this;
}
int main ()
{
Stringa a ("Salve");
Stringa b ("Mondo");
a.stampa();
b.stampa();
a.concat(b);
a.stampa();
cout << endl << endl;
system ("PAUSE");
return 0;
}