|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 1355
|
[C++] Dubbio su costruttore classe
Salve, avrei un dubbio sul costruttore non di default delle classi in c++.
vorrei sapere se è possibile dichiarare la variabile classe e poi in seguito chiamare il costruttore o se è necessario farlo durante la dichiarazione. Ho questo dubbio poichè vorrei passare nel costruttore dei dati che ricevo da input, quindi non immediatamente disponibili. Pensavo di utilizzare questo metodo Classe c; int a,b; cin>>a; cin>>b; c(a,b); è corretto utilizzare il costruttore di della classe 'c' in questo modo? grazie mille |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
No è sbagliato. Il costruttore serve a istanziare l'oggetto e devi usarlo alla creazione dell'oggetto. Hai 2 possibilità:
Codice:
Classe * c; int a,b; cin>>a; cin>>b; c = new Classe(a,b); Codice:
int a,b; cin>>a; cin>>b; Classe c(a,b); |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 1355
|
Come mai devo mettere l'asterisco prima di 'c'?
grazie mille |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 1355
|
è necessario inserire l'asterisco se voglio chiamare il costruttore dopo qualche istruzione?
come mai nell'altro caso non c'è l'asterisco? grazie ancora |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 1355
|
nel caso invece non avessi parametri nel costruttore potrei semplicemente fare così?
Classe c(); Int a,b; cin>>a; cin>>b; c.set(a,b); o posso anche omettere le parentesi di "c()"? |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Si ad entrambe le domande
|
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Nov 2014
Messaggi: 292
|
Dovrebbe, poichè ciò consente di rendere l'oggetto immutabile. Lo stato è il male. Ti rimando a letture di tua scelta circa i vantaggi dell'immutabilità e di come il paradigma RAII si renda conseguentemente necessario.
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Gli stream dovrebbero accettare sul costruttore tutti i dati letti o scritti sullo stream? Gli esempi si sprecano... Non è proprio questo il senso del RAII che ha più a che fare con la corretta gestione della memoria, specialmente in caso di eccezioni, dato che una delle poche garanzie che il C++ dà allo sviluppatore è che il distruttore viene sempre richiamato. |
|
|
|
|
|
|
#11 |
|
Bannato
Iscritto dal: Nov 2014
Messaggi: 292
|
Gli esempi che citi sono fatti per fornire gestione dello stato qualora questo sia irrimediabilmente richiesto dalle specifiche. Supponi ad esempio che sia espressamente richiesto di creare una GUI che permetta all'utente di inserire un numero arbitrario di elementi in una lista, rimuoverne alcuni precedentemente inseriti, ecc., senza avere la possibilità di affidarsi ad altri meccanismi sottostanti (p.es. senza poter salvare nulla nel file system e senza poter inviare nulla a un server esterno).
Ma in tutti gli altri casi l'immutabilità dovrebbe sempre essere preferita, i benefici in fase di diagnostica o in termini di leggibilità del codice sono interminabili. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:03.




















