Programação D - Construtor e destruidor

O Construtor de Classe

Uma aula constructor é uma função-membro especial de uma classe que é executada sempre que criamos novos objetos dessa classe.

Um construtor tem exatamente o mesmo nome da classe e não possui nenhum tipo de retorno, nem mesmo void. Os construtores podem ser muito úteis para definir valores iniciais para certas variáveis ​​de membro.

O exemplo a seguir explica o conceito de construtor -

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 o código acima é compilado e executado, ele produz o seguinte resultado -

Object is being created 
Length of line : 6

Construtor Parametrizado

Um construtor padrão não tem nenhum parâmetro, mas se você precisar, um construtor pode ter parâmetros. Isso ajuda você a atribuir um valor inicial a um objeto no momento de sua criação, conforme mostrado no exemplo a seguir -

Exemplo

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 o código acima é compilado e executado, ele produz o seguinte resultado -

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

The Class Destructor

UMA destructor é uma função de membro especial de uma classe que é executada sempre que um objeto de sua classe sai do escopo ou sempre que a expressão de exclusão é aplicada a um ponteiro para o objeto dessa classe.

Um destruidor tem exatamente o mesmo nome que a classe prefixada com um til (~). Ele não pode retornar um valor nem aceitar quaisquer parâmetros. O Destructor pode ser muito útil para liberar recursos antes de sair do programa, como fechar arquivos, liberar memórias etc.

O exemplo a seguir explica o conceito de destruidor -

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 o código acima é compilado e executado, ele produz o seguinte resultado -

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