[英]C++ Pre and Post Increment
我在重载后递增方法时遇到麻烦。
我的预增值很好。
我也有事前/事后递减,它们都工作得很好。
增量和减量主体应相似。 唯一的区别应该是++ /-,但是我不确定为什么我的职位增加不会像我的职位减少一样起作用。
预增量
upDate upDate::operator++() {
int julian = convertDateToJulian(datePtr[0], datePtr[1], datePtr[2]);
julian++;
convertDateToGregorian(julian);
return (*this);
}
职位增量
upDate upDate::operator++(int num) {
upDate temp (*this);
int julian = convertDateToJulian(datePtr[0], datePtr[1], datePtr[2]);
julian++;
convertDateToGregorian(julian);
return temp;
}
递减
upDate upDate::operator--(int num) {
upDate temp(*this);
int julian = convertDateToJulian(datePtr[0], datePtr[1], datePtr[2]);
julian--;
convertDateToGregorian(julian);
return temp;
}
这是我的主要:
upDate d5(11, 10, 2004);
++d5;
cout << d5 << endl;
cout << "Expected November 11, 2004\n" << endl;
//not working
upDate d6(11, 11, 2004);
d5++;
cout << d6 << endl;
cout << "Expected November 12, 2004\n" << endl;
upDate d11(12, 3, 1992);
d11--;
cout << d11 << endl;
cout << "Expected: December 2, 1992\n" << endl;
输出为:
//日期最初是2004年11月10日
// ++增量
2004年11月11日
预期:2004年11月11日
//日期最初是2004年11月11日
//增量++
2004年11月11日//输出不应该是这个
预期:2004年11月12日
//日期最初是1992年12月2日
// decr--
1992年12月1日
预期:1992年12月1日
您的主要内容中有一个错字:
//not working
upDate d6(11, 11, 2004);
d6++; // <---- you have d5++;
cout << d6 << endl;
cout << "Expected November 12, 2004\n" << endl;
你有错字 在此代码段中
//not working
upDate d6(11, 11, 2004);
d5++;
cout << d6 << endl;
cout << "Expected November 12, 2004\n" << endl;
您将后增量运算符应用于d5
d5++;
但输出d6
cout << d6 << endl;
d6不变。
还应考虑到预增量运算符的正确声明是
upDate & upDate::operator++();
那就是运算符应该返回左值。 而操作员返回一个临时对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.