我有有,月,日和年的变量定义的日期类的头文件和重载增量法:C++重载增量运算符
mydate operator++(int) {
return mydate(m, d+1, y);
}
和主CPP包括了头,所以一旦我运行cout<<dateXY++;
它显示日期递增1,但是,它不保留对象的值,而是将其重置为原始值。因此,如果我在增量后放置cout<<dateXY;
,它会显示原始日期。
我可以修改运算符重载,以便对象保持该值吗?
我有有,月,日和年的变量定义的日期类的头文件和重载增量法:C++重载增量运算符
mydate operator++(int) {
return mydate(m, d+1, y);
}
和主CPP包括了头,所以一旦我运行cout<<dateXY++;
它显示日期递增1,但是,它不保留对象的值,而是将其重置为原始值。因此,如果我在增量后放置cout<<dateXY;
,它会显示原始日期。
我可以修改运算符重载,以便对象保持该值吗?
假设这个函数是mydate
类的成员函数(就没有太大的意义,否则),您需要创建的mydate
一个临时的实例与老价值,增加this
的值,并返回临时实例。
像
mydate operator++(int) {
mydate tmp(m, d, y);
// set date to date + 1
return tmp;
}
这是递增运算符是如何工作的,它增加值,但增量之前返回旧值。
是的,你可以。所以,这样做(存储递增的值)。 –
我的意思是有可能在h文件中做?当然,我总是可以在主文件中做date = date ++,但这不是我的问题 – Norgul