Bonjour,
désolé de vous innodé de question aujourd'hui, mais j'aimerai savoir si le comportement suivant est "normal" :
donne :
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
16
17
18
19 #include <iostream> struct A { virtual ~A() = default; }; struct B : A { virtual ~B() { std::cout << "B destructor" << std::endl; } }; int main() { B* b = new B; A & refA = *b; delete &refA; return 0; }
????
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ./leakTest
alors que
donne :
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
16
17
18
19 #include <iostream> struct A { virtual ~A() {} }; struct B : A { virtual ~B() { std::cout << "B destructor" << std::endl; } }; int main() { B* b = new B; A & refA = *b; delete &refA; return 0; }
Est-ce un bug, ou =default est sensé supprimé la virtualité ? Merci d'avance !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ./leakTest B destructor
Partager