Les destructeur en c++

rosaRosi Messages postés 43 Statut Membre -  
rosaRosi Messages postés 43 Statut Membre -
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!!
Configuration: Windows XP
Firefox 3.5.6

3 réponses

  1. 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
  2. rosaRosi Messages postés 43 Statut Membre
     
    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
    1. Pacorabanix Messages postés 4122 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
  3. rosaRosi Messages postés 43 Statut Membre
     
    a ok je savais pas pour un bloc je viens de tester je te remercie infiniment :))
    0