Czy można bezpiecznie wywołać czystą funkcję wirtualną w abstrakcyjnym konstruktorze / destruktorze, JEŚLI ma on ciało?
Bez linii oznaczonej CIAŁO wiem, że to nie jest bezpieczne. Ale czy to jest bezpieczne?
struct A
{
virtual ~A() { f(); }
virtual void f() = 0;
};
void A::f() {} // BODY
struct B : A
{
void f() {}
};
int main()
{
delete new B;
}
Przykład pracy:http://ideone.com/9bRZ3i