Я пытаюсь перегрузить операторов на C++. Для этой цели, я написал следующий код:Верните это или * это при перегрузке оператора?
#include <iostream>
using namespace std;
class Box
{
public:
int height;
int width;
int length;
public:
Box operator+(const Box& b)
{
this->length = this->length + b.length;
this->width = this->width + b.width;
this->height = this->height + b.height;
return *this;
}
};
int main()
{
Box b1,b2;
b1.length = 5;
b1.width = 5;
b1.height = 5;
cout << "Length is : " << b1.length;
cout << "width is : " << b1.width;
cout << "height is : " << b1.height;
b2.length = 5;
b2.width = 5;
b2.height = 5;
b1 = b1 + b2 ;
cout << "Length is : " << b1.length;
cout << "width is : " << b1.width;
cout << "height is : " << b1.height;
cout << "Hello from first c++";
return 0;
}
Основная часть:
Box operator+(const Box& b)
{
this->length = this->length + b.length;
this->width = this->width + b.width;
this->height = this->height + b.height;
return *this;
}
Я не могу понять:
this-> длина = это -> длина + b.length;
возвращение * этот;
this.length не работает здесь. Почему я должен return *this
? Нужно ли return this
?
Вы не хотите, чтобы двоичный 'operator +' изменял любой из своих операндов. – juanchopanza
http://stackoverflow.com/questions/4421706/operator-overloading проверьте это. – basav