友達関数を使用してプリインクリメント演算子をオーバーロードしました。オーバーロードされたfriend関数では、変数の値が正しく表示されています。しかし、その値は表示機能には表示されません。なぜですか?オーバーロードプリインクリメント演算子が正しい結果を表示しない
#include <iostream>
using namespace std;
class Rectangle {
public:
int breadth;
public:
void read();
void display();
friend void operator ++(Rectangle r1);
};
void Rectangle::read()
{
cout << "Enter the breadth of the Rectangle: ";
cin >> breadth;
}
void operator++(Rectangle r1)
{
++r1.breadth;
cout<<r1.breadth<<endl; //correct result
}
void Rectangle::display()
{
cout<<breadth<<endl; // not showing pre-incremented value, why ???
}
int main()
{
cout<<"Unary Operator using Friend Function \n";
Rectangle r1;
r1.read();
++r1;
cout << "\n breadth of Rectangle after increment: ";
r1.display();
return 0;
}
"Rectangle r1"とは、渡されたものに基づいたポインタ、参照、またはコピーされたオブジェクトとは何ですか? – UKMonkey
++演算子はメンバではない関数なので、矩形のコピーをインクリメントします。 – tambre
++演算子はメンバ関数として実装する必要があります。 – tambre