C++重载增量运算符

C++ overloading increment operator

本文关键字:运算符 重载 C++      更新时间:2023-10-16

我有一个头文件,它有一个用年月变量和重载增量方法定义的日期类:

mydate operator++(int) {
    return mydate(m, d+1, y);
}

并且主cpp包含了头,所以一旦我运行cout<<dateXY++;,它就会向我显示增加了一的日期,然而,它并没有保留对象的值,而是将其重置为原始值。因此,如果我把cout<<dateXY;放在增量之后,它将显示原始日期。

我可以修改运算符重载以使对象保持值吗?

假设此函数是mydate类的成员函数(否则意义不大),则需要使用值创建mydate的临时实例,增加this的值并返回临时实例。

mydate operator++(int) {
    mydate tmp(m, d, y);
    // set date to date + 1
    return tmp;
}

这就是后增量运算符的工作方式,它增加值,但在增量之前返回旧值。