Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Classe Stringa [C++]
Forum - C/C++ - Classe Stringa [C++]

Avatar
AlesPalla (Normal User)
Rookie


Messaggi: 25
Iscritto: 23/11/2008

Segnala al moderatore
Postato alle 18:40
Giovedì, 19/11/2009
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...

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. class String{
  6.         char *p;
  7.     public:
  8.         String(char *a=""){
  9.             p=new char[strlen(a)+1];
  10.             strcpy(p,a);
  11.         }
  12.         String(const String&);
  13.         String& operator=(const String&);
  14.         operator char*(){return p;}
  15.         ~String(){delete[]p;}
  16. };
  17. String::String(const String& str){
  18.     p=new char[strlen(str.p)+1];
  19.     strcpy(p,str.p);
  20.  
  21. }
  22. String& String::operator=(const String& str){
  23.     if (this!=&str){
  24.         if(strlen(p)!=strlen(str.p)){
  25.             delete[]p;
  26.             p=new char[strlen(str.p)+1];
  27.         }
  28.         strcpy(p,str.p);
  29.     }
  30.     return *this;
  31. }



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 il 20/11/2009 alle 20:07


...
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 21:57
Giovedì, 19/11/2009

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:


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6110
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 3:04
Venerdì, 20/11/2009
Aggiungerei la parola chiave virtual al distruttore così che in futuro puoi definire una classe derivata e non avere pericoli di memory leaks.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
AlesPalla (Normal User)
Rookie


Messaggi: 25
Iscritto: 23/11/2008

Segnala al moderatore
Postato alle 17:28
Lunedì, 23/11/2009
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.


...
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 17:30
Lunedì, 23/11/2009
Testo quotato

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 :)


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
AlesPalla (Normal User)
Rookie


Messaggi: 25
Iscritto: 23/11/2008

Segnala al moderatore
Postato alle 17:42
Lunedì, 23/11/2009
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..


...
PM Quote