我在下面有与多态(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]中,程序被迫关闭。任何的想法 ??谢谢高级。
答案 0 :(得分:2)
Base
数组不是Derived
的数组。 Derived
实例可能大于Base
,然后当数组被视为Base
数组时,地址计算会变得混乱。因此,在这种情况下,标准指定未定义行为。
相反,您可以使用指向Base
的指针数组。