请教c++高手, 关于自定义的类相互赋值的问题..........请看代码!

jin_hua 2005-03-30 09:15:25
c++中同类对象是可以相互赋值,,为何下列语句,运行会出错....
原因何在...
请高手讲解!!!!!

#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
///#include "datastruct.h"

class t
{
private :
char *p ;
public :
t(int n)
{
p = new char[n];
};
~t()
{
delete []p ;
};
};

void main()
{
t t1(3),t2(4) ;
t2 = t1 ; //---该语句引起报错......
return ;
};
...全文
125 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
李马 2005-03-30
  • 打赏
  • 举报
回复
并不是这句赋值出的错,而是因为你没有重载赋值操作符,导致这个赋值行为采用了默认的成员复制的情况。也就是说,在赋值完成后,t2.p和t1.p都会指向原来t1.p所指向的内存,在析构的时候这段内存会被delete两次,所以程序就崩溃了。
解决的方法是重载赋值操作符,在其中开辟新的内存块,完成指针指向内容的复制。

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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