📅  最后修改于: 2023-12-03 14:59:51.288000             🧑  作者: Mango
C++ 中的增量(++)和减量(--)运算符可以被重载。重载后的运算符支持自定义类型,可以实现更丰富的功能。在重载这两个运算符时,需要注意它们的前置和后置两种形式。
前置形式 ++x 和 --x 可以直接修改 x 的值,并返回修改后的值。而后置形式 x++ 和 x-- 则是将 x 的值拷贝后再修改,最后返回拷贝前的值。
如果重载前置形式,则函数的返回类型为该类型的引用;如果重载后置形式,则函数的返回类型为该类型的值。
#include <iostream>
using namespace std;
class Counter {
private:
int count;
public:
// 构造函数
Counter(): count(0){}
Counter(int c): count(c){}
// 前置形式重载++
Counter& operator++() {
count++;
return *this;
}
// 后置形式重载++
Counter operator++(int) {
Counter temp(count);
count++;
return temp;
}
// 前置形式重载--
Counter& operator--() {
count--;
return *this;
}
// 后置形式重载--
Counter operator--(int) {
Counter temp(count);
count--;
return temp;
}
// 输出计数器值
void print() const {
cout << "count: " << count << endl;
}
};
int main() {
Counter c1(10), c2;
// 前置形式++
++c1;
c1.print();
// 后置形式++
c2 = c1++;
c1.print();
c2.print();
// 前置形式--
--c1;
c1.print();
// 后置形式--
c2 = c1--;
c1.print();
c2.print();
return 0;
}
C++ 中的增量(++)和减量(--)运算符重载可以通过前置和后置两种形式进行重载,重载后的运算符支持自定义类型,并可以实现更丰富的功能。在重载这两个运算符时,需要注意它们的前置和后置两种形式,并根据需要返回相应类型的引用或值。