fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Numero {
  5.  
  6. public:
  7. // Costruttore 1: senza parametri.
  8. Numero();
  9.  
  10. // Costruttore 2: con parametro
  11. Numero(const int&);
  12.  
  13. // Distruttore
  14. ~Numero();
  15.  
  16. // Metodo per impostare il valore
  17. void set_valore(const int&);
  18.  
  19. // Metodo per ottenere il valore
  20. int get_valore() const;
  21.  
  22. private:
  23. int valore;
  24. };
  25.  
  26.  
  27. /* Implementazione dei metodi */
  28.  
  29. // Costruttore 1:
  30. // - notare l'assenza di un tipo di ritorno (neanche void)
  31. // - c'รจ una lista di inizializzazione prima del corpo
  32. // - il corpo puo' essere vuoto, ma deve per forza esistere
  33. Numero::Numero()
  34. : valore(0) // Lista di inizializzazione
  35. {
  36. cout << "Richiamato il costruttore 1" << endl;
  37. }
  38.  
  39.  
  40. // Costruttore 2
  41. Numero::Numero(const int& v)
  42. : valore(v)
  43. {
  44. cout << "Richiamato il costruttore 2" << endl;
  45. }
  46.  
  47. // Distruttore: in questo caso non ha niente di
  48. // importante da fare.
  49. // Non ci sono mai parametri.
  50. Numero::~Numero()
  51. {
  52. cout << "Richiamato il distruttore" << endl;
  53. }
  54.  
  55. void Numero::set_valore(const int& v)
  56. {
  57. valore = v;
  58. }
  59.  
  60. int Numero::get_valore() const
  61. {
  62. return valore;
  63. }
  64.  
  65. /* Fine dell'implementazione dei metodi */
  66.  
  67.  
  68. int main()
  69. {
  70. Numero n1; // Viene richiamato il costruttore 1, senza parametri
  71. Numero n2(3); // Viene richiamato il costruttore 2, con il parametro 3
  72.  
  73. // Viene richiamato il secondo costruttore su un oggetto temporaneo senza nome.
  74. // Una volta costruito l'oggetto, si richiama su di esso il metodo get_valore().
  75. // Alla fine dell'istruzione, l'oggetto temporaneo viene distrutto: si
  76. // richiama quindi il suo distruttore.
  77. cout << Numero(-5).get_valore() << endl;
  78.  
  79. cout << n1.get_valore() << endl;
  80. n2.set_valore(15);
  81. cout << n2.get_valore() << endl;
  82.  
  83. // Con questa istruzione si esce dalla funzione attuale: tutti gli oggetti
  84. // creati al suo interno vengono distrutti richiamando il loro distruttore.
  85. return 0;
  86. }
Success #stdin #stdout 0s 2728KB
stdin
Standard input is empty
stdout
Richiamato il costruttore 1
Richiamato il costruttore 2
Richiamato il costruttore 2
-5
Richiamato il distruttore
0
15
Richiamato il distruttore
Richiamato il distruttore