Why does polymorphism not apply on arrays in C++? : <pre><code>#include &lt;iostream&gt;

using namespace std;

struct Base
{
    virtual ~Base()
    {
        cout &lt;&lt; "~Base(): " &lt;&lt; b &lt;&lt; endl;
    }

    int b = 1;
};

struct Derived : Base
{
    ~Derived() override
    {
        cout &lt;&lt; "~Derived(): " &lt;&lt; d &lt;&lt; endl;
    }

    int d = 2;
};

int main()
{
    Base* p = new Derived[4];
    delete[] p;
}
</code></pre>

<p>The output is as follws: (Visual Studio 2015 with Clang 3.8)</p>

<pre><code>~Base(): 1
~Base(): 2
~Base(): -2071674928
~Base(): 1
</code></pre>

<p>Why does polymorphism not apply on arrays in C++?</p>
