VC ++多态数组

时间:2016-03-10 08:16:09

标签: c++ arrays polymorphism

我发现了这样的代码

#include <iostream>

class A
{
public:
    A()
    {
        std::cout << "cA" << std::endl;
    }
    virtual ~A()
    {
        std::cout << "dA" << std::endl;
    }
    char a[11];
};
class B : public A
{
public:
    B()
    {
        std::cout << "cB" << std::endl;
    }
    ~B()
    {
        std::cout << "dB" << std::endl;
    }
    char a[21];
};
int main()
{
    {
        A* aa  = new B[5];
        std::cout << "==============" << std::endl;
        delete[] aa;
    }
    return 0;
}

在VC ++编译器中运行良好,但在GCC编译时失败。我理解为什么使用这样的数组可能是个坏主意(感谢Meyers),但它在VC ++中是如何工作的?它是在数组之前存储真实对象的大小吗?

0 个答案:

没有答案