segunda-feira, 28 de março de 2011

Dicas de Programação: Construtor e Destrutor em C++

Vamos falar em Construtor e Destrutor em C++.

Construtor é uma função especial, que é "executada" quando se instancia um objeto. A estrutura da função é que tem o mesmo nome da classe e não tem retorno. Exemplo:

//ArrayList.hpp
#ifndef ARRAYLIST_H
#define ARRAYLIST_H
class ArrayList {
private:
int* array;
public:
ArrayList();
};
#endif

//ArrayList.cc
#include "ArrayList.hpp"

ArrayList::ArrayList() {
this->array = new int[10];
}

Ela poderá ser chamada assim:

int main(int num_args, char **args) {
ArrayList a;
}

Ou assim:

int main(int num_args, char **args) {
ArrayList *a;
a = new ArrayList();
...
}

Destrutor é outra função especial, que é chamada quando um objeto é desalocado da memória. A estrutura da função é que ela possue o mesmo nome da classe com um ~ (til) no começo e não tem retorno. Exemplo:

//ArrayList.hpp
#ifndef ARRAYLIST_H
#define ARRAYLIST_H
class ArrayList {
private:
int* array;
public:
...
~ArrayList();
};
#endif

//ArrayList.cc
#include "ArrayList.hpp"

...
ArrayList::~ArrayList() {
delete this->array;
}

Ela poderá ser chamada assim:

int main(int num_args, char **args) {
ArrayList *a;
...
delete a;
}

Ou simplesmente quando a função que chamou termina, se não for instanciada como ponteiro:

int main(int num_args, char **args) {
ArrayList a;
...
}

Até mais!

Nenhum comentário: