void list::dizengjiaoji(list &L,list &N)//两个有序递增的集合
{
int ia, ib;
ia = ib = 0;
while (ia < len && ib < L.getlen())
{
if (date[ia] < L.getelement(ib+1))
{
ia++;
}
else if (date[ia] == L.getelement(ib+1))
{
N.insertlist(N.getlen()+1, date[ia]);
ia++;
ib++;
}
else
{
ib++;
}
}
N.show();
}
这是一个两个递增线性表取交集 放到新的线性表N中的函数 线性表的date用new来分配内存空间
以下是构造函数和析构函数QWQ
list::list()
{
cout << "please input the maxlen of list" << endl;
cin >> maxlen;
date = new int[maxlen];
cout << "please input the len of list" << endl;
cin >> len;
cout << "please input the element of the list" << endl;
for (int i = 0; i < len; i++)
{
cin >> date[i];
}
}
list::~list()
{
delete [] date;
}
具体问题就是当我写的那个功能函数的第一个参数如果不使用引用的话 运行的时候就会在delete那里断点///
想不明白了..求助大佬QWQ
参数传递的方式有两种,一种是值传递一种是引用传递,值传递的时候会调用类的复制构造函数list(const list &)来创建一个新的副本来传递给函数。当函数调用完的时候该副本会调用析构函数。而且当实参的生命周期到的时候也会调用析构函数。你这个类中有指针成员,而且是使用合成复制构造函数来进行浅拷贝,就会导致对同一个指针释放两次内存,就会出错。要解决这问题可以自己实现复制构造函数来进行深拷贝
您好,我是有问必答小助手,关于您的提出的问题,已有小伙伴做出解答,欢迎您加入CSDN!
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632