首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-03-09 
基类指针指向子类对象数组的问题class a[a〔〕;virtual `a〔〕;]class b public a[int abb〔〕;virtual `b〔〕;]

基类指针指向子类对象数组的问题
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没有跟到。
请高手做答。

[解决办法]
简单说吧,就是 
其中size是 数组所占的内存空间
p是首指针


for(int i = 0 ; i< size/sizeof(A ) ; i++ ){
(p+sizeof(A )*i)->~A ();
}

释放p;

热点排行