Programmazione D - Costruttore e distruttore

Il costruttore di classi

Una classe constructor è una funzione membro speciale di una classe che viene eseguita ogni volta che creiamo nuovi oggetti di quella classe.

Un costruttore ha esattamente lo stesso nome della classe e non ha alcun tipo di ritorno, nemmeno void. I costruttori possono essere molto utili per impostare i valori iniziali per alcune variabili membro.

L'esempio seguente spiega il concetto di costruttore:

import std.stdio;

class Line { 
   public: 
      void setLength( double len ) {
         length = len; 
      }
      double getLength() { 
         return length; 
      }
      this() { 
         writeln("Object is being created"); 
      }

   private: 
      double length; 
} 
 
void main( ) { 
   Line line = new Line(); 
   
   // set line length 
   line.setLength(6.0); 
   writeln("Length of line : " , line.getLength()); 
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Object is being created 
Length of line : 6

Costruttore parametrizzato

Un costruttore predefinito non ha alcun parametro, ma se necessario, un costruttore può avere parametri. Questo ti aiuta ad assegnare il valore iniziale a un oggetto al momento della sua creazione come mostrato nel seguente esempio:

Esempio

import std.stdio;

class Line { 
   public: 
      void setLength( double len ) { 
         length = len; 
      }
      double getLength() { 
         return length; 
      }
      this( double len) { 
         writeln("Object is being created, length = " , len ); 
         length = len; 
      } 

   private: 
      double length; 
} 
 
// Main function for the program 
void main( ) { 
   Line line = new Line(10.0);
   
   // get initially set length. 
   writeln("Length of line : ",line.getLength()); 
    
   // set line length again 
   line.setLength(6.0); 
   writeln("Length of line : ", line.getLength()); 
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Object is being created, length = 10 
Length of line : 10 
Length of line : 6

Il distruttore di classe

UN destructor è una funzione membro speciale di una classe che viene eseguita ogni volta che un oggetto della sua classe esce dall'ambito o ogni volta che l'espressione di eliminazione viene applicata a un puntatore all'oggetto di quella classe.

Un distruttore ha esattamente lo stesso nome della classe preceduta da una tilde (~). Non può né restituire un valore né accettare parametri. Destructor può essere molto utile per rilasciare risorse prima di uscire dal programma come chiudere file, rilasciare memorie ecc.

L'esempio seguente spiega il concetto di distruttore:

import std.stdio;

class Line { 
   public: 
      this() { 
         writeln("Object is being created"); 
      }

      ~this() { 
         writeln("Object is being deleted"); 
      } 

      void setLength( double len ) { 
         length = len; 
      } 

      double getLength() { 
         return length; 
      }
  
   private: 
      double length; 
}
  
// Main function for the program 
void main( ) { 
   Line line = new Line(); 
   
   // set line length 
   line.setLength(6.0); 
   writeln("Length of line : ", line.getLength()); 
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Object is being created 
Length of line : 6 
Object is being deleted