Les destructeur en c++

rosaRosi Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   -  
rosaRosi Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je voudrais savoir quand se fait l appelle au setructeur .
par exemple j ai une classe a
class A{
int n;
A ();
~A();
}
et par exeple j ai definit ~A()
{
cout<< " c est un test"<<endl;
}


main()
{A x;
}
est ce qu i maffichera "c est un test " ou pas ce programme ou il se fait quand j appele une method merci de de m eclaircir!!
A voir également:

3 réponses

cadeau
 
#include <iostream>
#include <string>

class A
{
public:
A(std::string _nom) {
nom = _nom;
std::cout << "A::A de" << nom << std::endl;
}
~A() { std::cout << "A::~A de" << nom << std::endl; }
private:
std::string nom;
};

int main()
{
A* a1 = new A("a1"); // A::A de a1
A a2("a2"); // A::A de a2
delete a1; // A::~A de a1

{
A a3; // A::A de a3
} // A::~A de a3
} // A::~A de a2

Le destructeur d'un objet instancié dans le tas est appelé par l'instruction delete.
Le destructeur d'un objet instancié dans la pile est appelé à la fin du block.
0
rosaRosi Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
merci beaucoup :) !!
alors ca veut dire que c est à la fin du programme principale les object dans la pile vont etre automatiquement effacé dans l ordre inverse c ca?
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
les objets qui sont déclarés directement dans le programme principal seront en effet détruits à la fin du programme principal. Attention : si tu déclares tes objets dans un bloc { .. }, ils seront détruits à la fin du bloc.

Pour l'ordre, fait- simplement un essai, tu verras bien, ça ne fera pas exploser ton ordi ;)
0
rosaRosi Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
a ok je savais pas pour un bloc je viens de tester je te remercie infiniment :))
0