重载+号运算符出错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重载+号运算符出错相关的知识,希望对你有一定的参考价值。
我在重载+号时老是出错,这是为什么呢?请大家帮忙啊!我不想使用全局变量:
class A
public:
A()
p=new int[3];
*p=1;
*(p+1)=2;
*(p+2)=3;
A(const A& a)
if(this==&a)
return;
p=new int[3];
for (int i=0;i<3;i++)
*(p+i) = *(a.p+i);
const A& operator =(const A& a)
for (int i=0;i<3;i++)
*(p+i) = *(a.p+i);
return (*this);
A& operator+(const A&a)
A b;
*b.p=*p+*a.p;
*(b.p+1)=*(p+1)+*(a.p+1);
*(b.p+2)=*(p+2)+*(a.p+2);
return b;
~A()
delete []p;
public:
int *p;
;
A fun()
A a;
return a;
int main()
A b;
b=fun(); //OK
cout<<*b.p<<*(b.p+1)<<*(b.p+2)<<endl;
A a;
A c;
c=a+b; //ERROR
cout<<*c.p<<*(c.p+1)<<*(c.p+2)<<endl;
system("pause");
return 0;
2楼的方法确实可以
A operator+(const A&a)
A b;
*b.p=*p+*a.p;
*(b.p+1)=*(p+1)+*(a.p+1);
*(b.p+2)=*(p+2)+*(a.p+2);
return b;
参考技术A 对+的重载,用途是什么?
又:重载中直接使用this多好,为何创建一个临时变量用于返回? 参考技术B 二楼正确。
以上是关于重载+号运算符出错的主要内容,如果未能解决你的问题,请参考以下文章
QT:重载 Qdatastream 中的“<<”运算符时出错