Programmazione e Progettazione Software Compito 20/11/2012
1) a) Supponendo che non esista la classe std::string, realizzare una classe String che permetta di:
◦ Costruire una stringa a partire da un char*
◦ Concatenare stringhe tramite operator+
◦ Svuotare la stringa
◦ Controllo della dimensione della stringa
◦ Accedere ad un carattere
◦ Stampare la stringa su uno stream con operator<<
b) Spiegare se si ritiene necessario fornire un copy costructor e operator= per la classe, se si ritiene necessario implementarli.
2) Partire dalla soluzione definita nel punto 1), creare una classe GrowingString che eredita da String aggiungendo un metodo Add ed un operator+= per aggiungere un carattere alla volta alla stringa.
3) Si realizzi una classe Dado che permetta di
◦ Lanciare il dado ed ottenere un numero tra 1 e 6
◦ Ottenere la frazione di volte che un certo numero e' stato ottenuto
4) Commentare il seguente codice trovando eventuali errori e problematiche.
#include <string>
class ListaStringhe { private:
string* stringhe;
public:
void Alloc(string* i) { i = new string[10];
}
int num;
ListaStringhe() { Alloc(stringhe);
}
void get(int i, string* str) { *str = stringhe[i];
} };
Programmazione e Progettazione Software Compito 20/11/2012
2) a) Supponendo che non esista la classe std::string, realizzare una classe String che permetta di:
◦ Costruire una stringa a partire da un char*
◦ Concatenare stringhe tramite operator+
◦ Svuotare la stringa
◦ Controllo della dimensione della stringa
◦ Accedere ad un carattere
◦ Stampare a stringa su uno stream con operator<<
b) Spiegare se si ritiene necessario fornire un copy costructor e operator= per la classe, se si ritiene necessario implementarli.
2) Partire dalla soluzione definita nel punto 1), creare una classe GrowingString che eredita da String aggiungendo un metodo Add ed un operator+= per aggiungere un carattere alla volta alla stringa.
3) Si realizzi una classe Dado che permetta di
◦ Lanciare il dado ed ottenere un numero tra 1 e 6
◦ Ottenere la frazione di volte che un certo numero e' stato ottenuto
4) Commentare il seguente codice trovando eventuali errori e problematiche.
#include <string>
class ListaStringhe { private:
string* stringhe;
public:
void Alloc(string* i) { i = new string[10];
}
int num;
ListaStringhe() { Alloc(da_comprare);
}
void get(int i, string* str) { *str = stringhe[i];
} };