64,662
社区成员
发帖
与我相关
我的任务
分享
class CDate{
private:
int m_nDay;
int m_nMonth;
int m_nYear;
void AddDays(int nDayToAdd){
m_nDay+=nDayToAdd;
if(m_nDay>30){
AddMonths(m_nDay/30);
m_nDay%=30;
}
}
void AddMonths(int nMonthToAdd){
m_nMonth+=nMonthToAdd;
if(m_nMonth>12){
AddYears(m_nMonth/12);
m_nMonth%=12;
}
}
void AddYears(int nYearToAdd){
m_nYear+=nYearToAdd;
} //private中是定义的 日期加减 不管31天的实际
public:
CDate(int nDay,int nYear,int nMonth):m_nDay(nDay),m_nMonth(nMonth),m_nYear(nYear){}
CDate & operator ++(){ //为什么要用引用传递???
AddDays(1); //这个地方AddDays(1) 是对谁进行操作???
return *this; //这个地方的this 是指的?指 原对象?
}
CDate operator ++(int){ //传入的参数有什么作用???
CDate mReturnDate(m_nDay,m_nMonth,m_nYear);
AddDays(1); //为什么 在类中 对象用方法 不需要用 mReturnDate. 呢`??
return mReturnDate;
}
void DisplayDate(){
std::cout<<m_nDay<<"/"<<m_nMonth<<"/"<<m_nYear<<std::endl;
}
};
int main(){
CDate mDate(25,6,2009);
mDate.DisplayDate();
CDate NewDate=(mDate++)++; //运行下来 结果是25/2009/6 26/2009/6 25/2009/6
mDate.DisplayDate();
NewDate.DisplayDate();
//如果用前置++ 则是 正确的 27/2009/6....???
}
CDate operator ++(int){
CDate mReturnDate(m_nDay,m_nMonth,m_nYear);
AddDays(1); //mReturnDate是函数名吧,不能这么用,需要用this指针
//怎么会是 函数名呢? 不是 复制了 一个对象 用来保存 ++之前的内容么???
return mReturnDate;
}
void AddDays(int nDayToAdd){
m_nDay+=nDayToAdd;
if(m_nDay>30){
AddMonths(m_nDay/30);
m_nDay%=30;
}
}
class CDate{
private:
int m_nDay;
int m_nMonth;
int m_nYear;
void AddDays(int nDayToAdd){
m_nDay+=nDayToAdd;
if(m_nDay>30){
AddMonths(m_nDay/30);
m_nDay%=30;
}
}
void AddMonths(int nMonthToAdd){
m_nMonth+=nMonthToAdd;
if(m_nMonth>12){
AddYears(m_nMonth/12);
m_nMonth%=12;
}
}
void AddYears(int nYearToAdd){
m_nYear+=nYearToAdd;
} //private中是定义的 日期加减 不管31天的实际
public:
CDate(int nDay,int nYear,int nMonth):m_nDay(nDay),m_nMonth(nMonth),m_nYear(nYear){}
CDate & operator ++(){ //为什么要用引用传递???
//传递引用的话,你就可以像cout<<xx<<yy<<endl;一样一直使用++操作符了
AddDays(1); //这个地方AddDays(1) 是对谁进行操作???
//这个函数相当于this->AddDays(1),当调用该函数的对象Days+1
return *this; //这个地方的this 是指的?指 原对象?
//this就是指调用这个函数的对象的指针,this相当于const CDate*指针,*this就是代表这个对象
}
CDate operator ++(int){ //传入的参数有什么作用???
//括号中的int,表示这个++是后置的++,因为++有两种,分别为a++和++a,这是规定写法
CDate mReturnDate(m_nDay,m_nMonth,m_nYear);
AddDays(1); //为什么 在类中 对象用方法 不需要用 mReturnDate. 呢`??
//mReturnDate是函数名吧,不能这么用,需要用this指针
return mReturnDate;
}
void DisplayDate(){
std::cout<<m_nDay<<"/"<<m_nMonth<<"/"<<m_nYear<<std::endl;
}
};