C++ 重载增量运算符

C++ overloading increment operator

我有一个 header 文件,其中的日期 class 定义了月日和年变量以及重载增量方法:

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

并且主 cpp 包含 header,所以一旦我 运行 cout<<dateXY++; 它会显示日期递增 1,但是,它不会保留值object,而是将其重置为原始状态。所以如果我把 cout<<dateXY; 放在增量之后,它会显示原始日期。

我可以修改运算符重载以便 object 保留值吗?

假设此函数是 mydate class 的成员函数(否则没有多大意义),您需要使用 mydate 创建一个临时实例 值,增加this和return临时实例的值。

喜欢

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

这就是 post 递增运算符的工作方式,它递增值,但 return 是递增前的旧值。