Bonjour à tous.
Voici un petit code un peu tordu:
La grande question que je me demande, c'est la correction de ce code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class A { A* ma; public: ~A(){delete ma;} A(A* a):ma(a){} void foo(A* a){delete a;} void bar(){ma->foo(this);} }; int main(int argc, char const *argv[]) { (new A(new A(0)))->bar(); return 0; }
En effet, après la destruction de l'objet qui appelle bar, il y a retour à lui mais il n'existe plus, c'est plutôt problématique.
le code ne plante pas chez moi, mais ce n'est pas une preuve. Je pense que ca ne plante pas car je ne manipule pas de données membres, mais je n'en suis pas sûr.
Quelqu'un pour confirmer ?
Merci.
David Côme.
Partager