关于子类的析构函数

direction917 2010-12-29 06:36:49
class Array{

private :
int * data;
public:
dellocate();
Array(int n){ data = new int[n];}

~Array(){
dellocate();
}
};

Array::dellocate()
{
delete[]data;
}

class Matrix: public Array
{
public:
Matrix(int n)
{
Array::Array(n);
}
dellocate(){
Array::dellocate();
}
~Matrix(){
dellocate();
}
}

测试函数如下:
Matrix ma(10);

这样子写子类的析构函数有问题吗?
为什么程序运行完成后会出现Debug Assertion failure的问题?
请诸位前辈指教啊!

...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
direction917 2010-12-29
  • 打赏
  • 举报
回复
结贴了,大家说的都很对,实在不知道该怎么给分
direction917 2010-12-29
  • 打赏
  • 举报
回复
了解了
就想叫yoko 2010-12-29
  • 打赏
  • 举报
回复
不需要你在子类的析构函数中调用父类的析构函数[Quote=引用 4 楼 q191201771 的回复:]
子类对象在析构时会自动调用父类的析构函数, 不需要你再次调用
[/Quote]
就想叫yoko 2010-12-29
  • 打赏
  • 举报
回复
子类对象在析构时会自动调用父类的析构函数, 不需要你再次调用
ryfdizuo 2010-12-29
  • 打赏
  • 举报
回复
class Array{

private :
int * data;
public:
void dellocate();
Array(int n){ data = new int[n];}

~Array(){
dellocate();
cout << "Delete Array" << endl;
}
};

void Array::dellocate()
{
delete[]data;
}

class Matrix: public Array
{
public:
Matrix(int n)
:Array(n)
{
}
~Matrix(){
//dellocate();
}
};

int main()
{
Matrix ma(10);

return 0;
}
ryfdizuo 2010-12-29
  • 打赏
  • 举报
回复
重复析构啊
無_1024 2010-12-29
  • 打赏
  • 举报
回复
报这个原因的错误原因是因为继承的析构函数运用问题

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧