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 是递增前的旧值。
我有一个 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 是递增前的旧值。