重载+号运算符出错

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 中的“<<”运算符时出错

C++读书笔记之 关系运算符重载 大于号; 小于号< 等于号== 重载 overload

c++中加号运算符重载

学习:类和对象——运算符重载

运算符重载(C++)

c++ 运算符重载问题