En plus du constructeur qui est automatiquement appelé lorsqu'un objet de classe est créé comme mentionné dans la section précédente, une fonction est également automatiquement appelée lorsque l'objet est détruit. Elle porte également le même nom que le nom de la classe et n'a aucune valeur de retour. Il y a un tilde ~ devant le nom. Utilisation Pour distinguer le constructeur, sa fonction est principalement utilisée pour nettoyer les conséquences après la libération de l'objet. C'est le destructeur .
Tout comme le constructeur et le nom de la classe, il n'y a pas de valeur de retour. Si l'utilisateur ne la définit pas, le système générera automatiquement un destructeur vide. Une fois défini par l'utilisateur, il est automatiquement appelé lors de la destruction de l'objet.
Contrairement aux constructeurs, bien qu'ils soient tous deux de type public. La construction peut être surchargée et avoir plusieurs frères, mais le destructeur ne peut pas être surchargé, mais il peut s'agir d'une fonction virtuelle et une classe ne peut avoir qu'un seul destructeur.
Ensuite, nous prenons la classe Student comme exemple et continuons à ajouter un destructeur. En même temps, nous ajoutons des informations sur la classe actuelle à la fois dans le constructeur et dans le destructeur pour identifier quelle classe est créée et détruite. :
#include<iostream>#include<Cstring>usingnamespacestd;classStudent{private:intnum;//numéro d'étudiant charname[100];//name intscore;//score public:Student(intn,char*str,ints);~Student ();intprint();intSet(intn,char*str,ints);};Student::Student(intn,char*str,ints){num=n;strcpy(name,str);score=s;cout <<num<<<<nom<<<<score<<;cout<<Constructor<<endl;}Student::~Student(){cout<<num<<<<nom<<<<score<<; cout<<destructor<<endl;}intStudent::print(){cout<<num<<<<name<<<<score<<endl;return0;}intStudent::Set(intn,char*str,ints) {num=n;strcpy(name,str);score=s;}intmain(){StudentA(100,dot,11);StudentB(101,cpp,12);return0;}
Veuillez comprendre attentivement le constructeur et le destructeur dans le code ci-dessus, et notez que deux objets A et B sont définis dans la fonction principale, et testez-le sur votre propre ordinateur. Vous pouvez voir que l'effet exécuté est le suivant :
Vous voyez que l'ordre d'appel des constructeurs et l'ordre d'appel des destructeurs des objets A et B sont complètement opposés ! La raison en est que les objets A et B sont tous deux des objets locaux et sont également stockés dans la zone de pile. Ils suivent également l'ordre « premier entré, dernier sorti » !
Assurez-vous de tester et de vérifier les résultats en personne !