Bonjour à tous.
Voici un petit code un peu tordu:
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;
}
La grande question que je me demande, c'est la correction de ce code.
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.