Dichiarazione variabili di tipi composti
Ho creato una classe di nome Dado, dunque posso creare variabili di tipo Dado, giusto?
Che differenza c'è tra lo scrivere Dado d1; e Dado d1(6); ? La prima è una dichiarazione di variabile ma la seconda dovrebbe essere un costruttore. La prima si può utilizzare o no. Alla prima dichiarazione posso assegnare un valore o no? Sono un pò confuso in merito a questo argomento.
Che differenza c'è tra lo scrivere Dado d1; e Dado d1(6); ? La prima è una dichiarazione di variabile ma la seconda dovrebbe essere un costruttore. La prima si può utilizzare o no. Alla prima dichiarazione posso assegnare un valore o no? Sono un pò confuso in merito a questo argomento.
Risposte
"olegfresi":
Ho creato una classe di nome Dado, dunque posso creare variabili di tipo Dado, giusto?
Si
"olegfresi":
Che differenza c'è tra lo scrivere Dado d1; e Dado d1(6); ? La prima è una dichiarazione di variabile ma la seconda dovrebbe essere un costruttore. La prima si può utilizzare o no. Alla prima dichiarazione posso assegnare un valore o no? Sono un pò confuso in merito a questo argomento.
Suppongo che tu stia lavorando in c++. Con l'istruzione
Dado d1;crei (sarebbe meglio dire istanzi) un oggetto d1 di tipo Dado utilizzando il costruttore di default che può essere quello da te definito o quello generato di default dal tuo compilatore. Con
Dado d1(6);crei l'oggetto d1 usando un costruttore da te definito in cui ad esempio vai a settare un attributo della classe Dado (ad esempio
private int numeroDiFacce;.
"olegfresi":Diversamente dall'usuale dichiarazione di variabili per settare gli attributi di una classe di usano i costruttori.
Alla prima dichiarazione posso assegnare un valore o no? Sono un pò confuso in merito a questo argomento.
Perfetto, grazie mille, hai chiarito tutti i miei dubbi a riguardo!
Scusa, mi è sorto un dubbio: se io dichiaro una variabile Dado d1; io sto chiamando un costruttore vuoto come se scrivessi Dado d1(), giusto? Se questo è vero io dichiaro una variabile Dado d1 e posso eseguire il comando d1.funzione, se invece dachiaro una variabile così: Dado d1() non posso più scrivere d1.funzione, però in entrambi i casi io sto chiamando un costruttore di defaulte. Come mai non è possibile invocare un metodo sulla variabile nel secondo caso?
Perchè il costruttore di default si scrive senza parentesi (cioè Dado d1; ). Nel secondo caso credo che lui interpreti l'istruzione Dado d1() come la dichiarazione di una funzione ( di nome d1 e che ritorna un tipo Dado) e per questo il compilatore ti dà un errore quando provi a fare d1.funzione().
Ah, già, non ci ho proprio pensato, grazie mille ancora.