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