Czy kolejność niszczenia jest dobrze zdefiniowana w przypadku dziedziczenia wielokrotnego?Porządek zniszczenia w przypadku wielokrotnego dziedziczenia
struct A
{
~A(){std::cout << "A\n";}
};
struct B
{
~B(){std::cout << "B\n";}
};
struct AB : public B, public A
{
~AB(){std::cout<<"AB\n";}
};
int main()
{
AB ab;
}
Dla danego kodu moje wydruki kompilatora:
AB
B
A
buf używam bardziej skomplikowanych konstrukcji (w tym CWinApp
), otrzymuję różne rezultaty. Czy porządek jest dobrze zdefiniowany? A jeśli tak, to jaka jest zasada porządkowania?
Tak, zniszczenie odbywa się w kolejności odwrotnej do deklaracji. –
Który kompilator używasz, aby to wydrukować? Powinien AB, A, B. – Barry
Używam Visual Studio 2013 – user1235183