Desctructeur virtuel et default c++0x
Bonjour,
désolé de vous innodé de question aujourd'hui, mais j'aimerai savoir si le comportement suivant est "normal" :
Code:
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;
} |
donne :
????
alors que
Code:
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;
} |
donne :
Code:
1 2 3
|
./leakTest
B destructor |
Est-ce un bug, ou =default est sensé supprimé la virtualité ? Merci d'avance !