C++程序 求两个集合的交集 用到了运算符重载 但是指针出错了 请帮忙指点一下

2025-05-22 06:45:06
推荐回答(2个)
回答1:

你的程序没有错,指针也没有错;
你只是只重载了++,却没有重载“=”,
那么你的c=a+b中,“=”是不能直接用于Array对象的
你只要把“=”重载或者,不用c,直接写(a+b).show都是可以 的;
我相信重载个“=”对你而言不是问题吧,呵呵

回答2:

Array Array::operator+(Array& d)
{
Array x;
int i;
x.num=0;
for(i=0;i x.A[x.num++]=A[i];
for(i=0;i if(!x.Ismember(d.A[i]))
x.A[x.num++]=d.A[i];
return x;
}

函数中返回一个临时对象,而:

c=a+b;

直接复制此临时对象的成员域。。此语句结束之后。。临时对象已经失效。。

而下面你仍然打算访问 c (各成员域实为原临时对象的)的成员。。

不崩溃那才怪了。。

【解决办法】

1、不使用 + 重载运算符函数

2、重载赋值运算符

3、 … 其他方法