Oppure

Loading
19/11/09 17:40
AlesPalla
Ciao frequento il primo anno di Ingegneria Elettronica e il nostro professore ci ha detto di creare una classe Stringa che rappresenti una stringa di caratteri(di lunghezza variabile) con tempo di vita automatico.
Io ho fatto questa, ditemi le vostre opinioni visto che domani la devo far vedere al professore...

#include <iostream>
#include <cstring>
using namespace std;

class String{
        char *p;
    public:
        String(char *a=""){
            p=new char[strlen(a)+1];
            strcpy(p,a);
        }
        String(const String&);
        String& operator=(const String&);
        operator char*(){return p;}
        ~String(){delete[]p;}
};
String::String(const String& str){
    p=new char[strlen(str.p)+1];
    strcpy(p,str.p);

}
String& String::operator=(const String& str){
    if (this!=&str){
        if(strlen(p)!=strlen(str.p)){
            delete[]p;
            p=new char[strlen(str.p)+1];
        }
        strcpy(p,str.p);
    }
    return *this;
}


Fate presente che è 1 mese che si programma e che prima dell'università non ero mai andato oltre un ciclo for in c..

EDIT by HeDo: Titolo fixato
Ultima modifica effettuata da HeDo 20/11/09 19:07
aaa
19/11/09 20:57
HeDo

Così a occhio mi sembra buona. Aggiungi un indicizzatore per ottenere l'n-esimo carattere e magari qualche operatore aggiuntivo, il + ad esempio per concatenare. :k:
aaa
20/11/09 2:04
pierotofy
Aggiungerei la parola chiave virtual al distruttore così che in futuro puoi definire una classe derivata e non avere pericoli di memory leaks.
Il mio blog: piero.dev
23/11/09 16:28
AlesPalla
grazie 1000 x le risposte il prof ha detto che andava bene(c'ho aggiunto anche le funzioni + ,- ecc come mi era stato suggerito).
Non ho potuto aggiungere l'altro perchè noi ad elettronica non facciamo ne ereditarietà ne polimorfismo.
aaa
23/11/09 16:30
HeDo
Postato originariamente da AlesPalla:

grazie 1000 x le risposte il prof ha detto che andava bene(c'ho aggiunto anche le funzioni + ,- ecc come mi era stato suggerito).
Non ho potuto aggiungere l'altro perchè noi ad elettronica non facciamo ne ereditarietà ne polimorfismo.


beh ma nulla ti vieta di uscire dai solchi scavati dal carretto del prof e impararteli da solo :)
aaa
23/11/09 16:42
AlesPalla
Si certamente e infatti ereditarietà e polimorfismo li ho già imparati ma certamente non posso portargli un progetto con classi derivate e funzioni virtuali!
Figurati ora stiamo facendo architettura di un calcolatore e assembler..
aaa