LateBinding与动态内存

时间:2016-04-20 23:14:03

标签: c++ oop polymorphism late-binding

我在下面有与多态(Latebinding)相关的Base和Derive类:

 class Base
{
....
};

class Derive:public Base
{
....
};

int main()
{
  int n;
  cin>>n;
  Base *pt;
  pt=new Derive[n];

  for(int i=0;i<n;i++)
     pt[i].Input(); 
}

当我输入pt [0]的第一个索引时,它很好,但在索引[1]中,程序被迫关闭。任何的想法 ??谢谢高级。

1 个答案:

答案 0 :(得分:2)

Base数组不是Derived的数组。 Derived实例可能大于Base,然后当数组被视为Base数组时,地址计算会变得混乱。因此,在这种情况下,标准指定未定义行为

相反,您可以使用指向Base的指针数组。