Programmation en D - Constructeur et destructeur

Le constructeur de classe

Une classe constructor est une fonction membre spéciale d'une classe qui est exécutée chaque fois que nous créons de nouveaux objets de cette classe.

Un constructeur a exactement le même nom que la classe et il n'a aucun type de retour, pas même void. Les constructeurs peuvent être très utiles pour définir les valeurs initiales de certaines variables membres.

L'exemple suivant explique le concept de constructeur -

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()); 
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Object is being created 
Length of line : 6

Constructeur paramétré

Un constructeur par défaut n'a aucun paramètre, mais si vous en avez besoin, un constructeur peut avoir des paramètres. Cela vous aide à attribuer une valeur initiale à un objet au moment de sa création, comme indiqué dans l'exemple suivant -

Exemple

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()); 
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

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

Le destructeur de classe

UNE destructor est une fonction membre spéciale d'une classe qui est exécutée chaque fois qu'un objet de sa classe sort de la portée ou chaque fois que l'expression de suppression est appliquée à un pointeur vers l'objet de cette classe.

Un destructeur a exactement le même nom que la classe précédée d'un tilde (~). Il ne peut ni renvoyer une valeur ni accepter de paramètres. Destructor peut être très utile pour libérer des ressources avant de sortir du programme, comme fermer des fichiers, libérer des souvenirs, etc.

L'exemple suivant explique le concept de destructeur -

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()); 
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

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