Além do construtor que é chamado automaticamente quando um objeto de classe é criado conforme mencionado na seção anterior, uma função também é chamada automaticamente quando o objeto é destruído. Ela também possui o mesmo nome do nome da classe e não possui valor de retorno. Há um til ~ na frente do nome Use Para distinguir o construtor, sua função é usada principalmente para limpar o resultado após o lançamento do objeto. É o destruidor .
Assim como o construtor e o nome da classe, não há valor de retorno. Se o usuário não o definir, o sistema gerará automaticamente um destruidor vazio. Uma vez definido pelo usuário, é chamado automaticamente quando o objeto é destruído.
Ao contrário dos construtores, embora ambos sejam tipos públicos. A construção pode estar sobrecarregada e ter vários irmãos, mas o destruidor não pode estar sobrecarregado, mas pode ser uma função virtual, e uma classe só pode ter um destruidor.
A seguir, tomamos a classe Student como exemplo e continuamos a adicionar um destruidor. Ao mesmo tempo, adicionamos informações sobre a classe atual no construtor e no destruidor para identificar qual classe é criada e destruída. :
#include<iostream>#include<Cstring>usingnamespacestd;classStudent{private:intnum;//número do aluno charname[100];//nome intscore;//pontuação public:Student(intn,char*str,ints);~Student ();intprint();intSet(intn,char*str,ints);};Aluno::Aluno(intn,char*str,ints){num=n;strcpy(nome,str);pontuação=s;cout <<num<<<<nome<<<<pontuação<<;cout<<Construtor<<endl;}Aluno::~Student(){cout<<num<<<<nome<<<<pontuação<<; cout<<destrutor<<endl;}intStudent::print(){cout<<num<<<<nome<<<<pontuação<<endl;return0;}intStudent::Set(intn,char*str,ints) {num=n;strcpy(nome,str);pontuação=s;}intmain(){StudentA(100,ponto,11);StudentB(101,cpp,12);return0;}
Por favor, entenda cuidadosamente o construtor e o destruidor no código acima e observe que dois objetos A e B são definidos na função principal e teste-os em seu próprio computador. Você pode ver que o efeito de execução é o seguinte:
Você pode ver que a ordem de chamada dos construtores e a ordem de chamada dos destruidores dos objetos A e B são completamente opostas! A razão é que os objetos A e B são objetos locais e também são armazenados na área da pilha. Eles também seguem a ordem "primeiro a entrar, último a sair"!
Certifique-se de testar e verificar os resultados pessoalmente!