Je réalise que cette question a été soulevée à quelques reprises, mais j'essaie d'obtenir une réponse définitive à la question ci-dessus, mais je continue à venir à travers des informations contradictoires. Ce que je dois savoir, c'est si un objet de classe de base est détruit quand j'utilise exit(). Je suis conscient de la mémoire dynamique besoin d'être supprimé, mais je sens quelque chose comme:Les destructeurs d'objets de base sont-ils appelés en sortie()?
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
class employee
{
public:
employee();
string name;
~employee();
};
employee::employee()
{
name = "bob";
}
employee::~employee()
{
cout << "Object destroyed" << endl;
}
int main()
{
employee emp1;
exit(1);
cout << "Hello" << endl;
}
Maintenant, si je retire la sortie (1) de la principale, le « objet détruit » et « Bonjour » sont imprimés comme prévu. Laissant là cependant, aucun n'est imprimé. La raison est évidente pour "Bonjour", mais j'étais sous l'impression que emp1 serait encore détruit, mais le message de destruction n'est pas montré ...
Je regardais this link et il dit que les objets statiques étaient détruits . L'objet ci-dessus n'est-il pas considéré comme statique?
Sinon, existe-t-il un moyen de terminer un programme sans le visser avec de la mémoire? Mon projet tourne autour de l'entrée de l'utilisateur et j'essayais de donner l'option de quitter si l'utilisateur saisissait le mot 'exit'.
if(input_var == "exit")
{
cout << "You have chosen to exit the program." << endl;
exit(1);
}
Est un exemple approximatif de ce que mon intention était.
Alors serait-il faisable de créer statiquement mes objets créés par l'utilisateur, afin que exit les détruise? Une fois l'objet créé, la seule chose qui peut être faite est la suppression, donc aucune valeur n'est disponible pour changer. –
Oui, c'est une option. Vous remarquerez que si vous mettez un static devant la déclaration, le constructeur est appelé même si exit() est appelé. – jaybers