class a
[
a〔〕;
virtual `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;
}