现在的位置: 首页 > 综合 > 正文

基类指针指向子类对象数组的问题

2013年12月08日 ⁄ 综合 ⁄ 共 547字 ⁄ 字号 评论关闭
class a
[
  a〔〕;
  virtual `a〔〕;
]

class b ;public a
[
  int ab;
  b〔〕;
  virtual `b〔〕;
]

现有; 
a *pA = new b[10];

...

delete [] pA;

书上说,delete的时候只会调用a的析构函数,并且传给vec-delete的对象大小也是sizeof[pA]的大小,因此,书上建议不要使用基类 指针指向子类数组。但是我实验的结果是,a和b的析构函数均调用了,因为看不懂汇编,因此vec-delete没有跟到。
请高手做答。

-------------------------------------------------------------

class Base
{
public:
Base()
{
cout
<<"Base()"<<endl;
}
virtual ~Base()
{
cout
<<"~Base()"<<endl;
}
};
class Child:public Base
{
public:
Child()
{
cout
<<"Child()"<<endl;
}
virtual ~Child()
{
cout
<<"~Child()"<<endl;
}
};
int main(int argc, char* argv[])
{
Child x;
return 0;
}

 

抱歉!评论已关闭.