Cplusplus-increment-decrement-operators-overloading
提供:Dev Guides
オーバーロードインクリメント++およびデクリメント-
インクリメント()およびデクリメント(-)演算子は、C で使用できる2つの重要な単項演算子です。
次の例では、プレフィックス(postfix)の使用法に対してインクリメント(++)演算子をオーバーロードする方法を説明します。 同様に、演算子(-)をオーバーロードできます。
#include <iostream>
using namespace std;
class Time {
private:
int hours; //0 to 23
int minutes; //0 to 59
public:
//required constructors
Time() {
hours = 0;
minutes = 0;
}
Time(int h, int m) {
hours = h;
minutes = m;
}
//method to display time
void displayTime() {
cout << "H: " << hours << " M:" << minutes <<endl;
}
//overloaded prefix ++ operator
Time operator++ () {
++minutes; //increment this object
if(minutes >= 60) {
++hours;
minutes -= 60;
}
return Time(hours, minutes);
}
//overloaded postfix ++ operator
Time operator++( int ) {
//save the orignal value
Time T(hours, minutes);
//increment this object
++minutes;
if(minutes >= 60) {
++hours;
minutes -= 60;
}
//return old original value
return T;
}
};
int main() {
Time T1(11, 59), T2(10,40);
++T1; //increment T1
T1.displayTime(); //display T1
++T1; //increment T1 again
T1.displayTime(); //display T1
T2++; //increment T2
T2.displayTime(); //display T2
T2++; //increment T2 again
T2.displayTime(); //display T2
return 0;
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
H: 12 M:0
H: 12 M:1
H: 10 M:41
H: 10 M:42