求教

yd2011222 2015-05-26 07:09:03
#include<iostream>
using namespace std;
class Date{
Date& Date::operator ++(); //前置++

Date Date::operator ++(int); //后置++

Date& Date::operator --(); //前置--

Date Date::operator --(int); //后置--

int year, month, day;
static int days[];
void increment();
void decrement();


public:

Date(int y = 2008, int m = 8, int d = 1){

year = y; month = m; day = d;

}

void set(int y, int m, int d){

year = y; month = m; day = d;

}

void print(){

cout << year << '-' << month << '-' << day << '\n';

}

};
int Date::days[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
void Date::increment(){
if (month == 2 && day < 29 && year % 4 == 0 && year % 100 != 0)
++day;
else
if (day < Date::days[month])
++day;
else

if (month < 12){
++month;
day = 1;
}
else
{
++year;
month = 1;
day = 1;
}

}
void Date::decrement(){
if (day > 1)
--day;
else if (month == 3 && year % 4 == 0 && (year % 400 == 0) || (year % 100 != 0)){
day = 29;
--month;
}
else
if (month > 1)
day = days[--month];
else{

--year;
month = 12;
day = 31;
}

}

Date& Date:: operator ++(){
return Date(year,month, ++day);

}
Date Date:: operator ++( int){
return Date(year, month, day++);
}
Date &Date:: operator --(){
return Date(year, month, --day);
}
Date Date::operator --( int){

return Date(year, month, day--);

}
int main(){

Date B,A(2006,3,1);
A.print();
B.print();
B = ++A;
A.print();
B.print();
B = A++;
A.print();
B.print();
}
编译结果:
主函数的错误B = ++A; B = A++;
求教
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yd2011222 2015-05-26
  • 打赏
  • 举报
回复
跟友原函数不同吗、》》有原好像不要。求教
iyomumx 2015-05-26
  • 打赏
  • 举报
回复
返回了对临时对象的引用 前置++/--按语义应返回*this
苏叔叔 2015-05-26
  • 打赏
  • 举报
回复
添加一个词:

class Date {
public:
	Date& Date::operator ++();     //前置++
	Date Date::operator ++(int);   //后置++
	Date& Date::operator --();     //前置--
	Date Date::operator --(int);   //后置--
	int year, month, day;
	static int days[];
	void increment();
	void decrement();
public:
	Date(int y = 2008, int m = 8, int d = 1) {
		year = y; month = m; day = d;
	}
	void set(int y, int m, int d) {
		year = y; month = m; day = d;
	}
	void print() {
		cout << year << '-' << month << '-' << day << '\n';
	}
};

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧