#include <iostream>
using namespace std;
struct Base
{
virtual ~Base()
{
cout << "~Base(): " << b << endl;
}
int b = 1;
};
struct Derived : Base
{
~Derived() override
{
cout << "~Derived(): " << d << endl;
}
int d = 2;
};
int main()
{
Base* p = new Derived[4];
delete[] p;
}
Вывод выглядит следующим образом: (Visual Studio 2015 с Clang 3.8)
~Base(): 1
~Base(): 2
~Base(): -2071674928
~Base(): 1
Почему полиморфизм не применяется к массивам в С++?