#include <iostream>
using namespace std;
class NumDays
{
private:
int hour;
int day;
void simplify();
public:
NumDays()
{
day = 0;
hour = 0;
}
void setData(int d, int h)
{
hour = h;
day = d;
simplify();
}
int getHour()
{
return hour;
}
int getDay()
{
return day;
}
NumDays operator++(int);
NumDays operator--(int);
};
void NumDays::simplify()
{
hour = 8*day + hour;
day = hour/8;
hour = hour % 8;
}
NumDays NumDays::operator++(int)
{
NumDays obj1;
hour++;
simplify();
return obj1;
}
NumDays NumDays::operator--(int)
{
NumDays obj1;
hour--;
simplify();
return obj1;
}
void setFirst(NumDays &);
void setSecond(NumDays &);
void addData(NumDays &, NumDays &, NumDays &);
int main()
{
NumDays first, second, third;
setFirst(first);
setSecond(second);
addData(first, second, third);
}
void setFirst(NumDays &obj1)
{
int day, hour = 0;
cout << "Please enter the amount of days followed by hours." << endl;
cin >> day >> hour;
obj1.setData(day, hour);
}
void setSecond(NumDays &obj2)
{
int day, hour = 0;
cout << "Please enter the amount of days followed by hours again." << endl;
cin >> day >> hour;
obj2.setData(day, hour);
}
void addData(NumDays &obj1, NumDays &obj2, NumDays &obj3)
{
for (int k = 0; k < 8; k++)
{
obj3 = obj1++;
cout << " First Data: " << obj3.getDay() << " day(s), "
<< obj3.getHour() << " hour(s).";
cout << " First Data: " << obj1.getDay() << " day(s), "
<< obj1.getHour() << " hour(s).\n";
}
cout << endl;
for (int l = 0; l < 8; l++)
{
obj3 = obj2++;
cout << " Second Data: " << obj3.getDay() << " day(s), "
<< obj3.getHour() << " hour(s).";
cout << " Second Data: " << obj2.getDay() << " day(s), "
<< obj2.getHour() << " hour(s).\n";
}
}
當我運行該文件時,obj3有0天0小時,obj2增加。這是怎麼回事? 當我嘗試它作爲obj3 = obj2沒有任何後綴的跡象時,它複製它。所以我假設從obj2獲取數據沒有問題。但是,當我包括後綴運算符,當修改操作員的內部小時的數據變爲0和0重載postfix操作符不起作用
這可能幫助:http://stackoverflow.com/questions/4421706/operator-overloading?rq=1 –
你的運營商都斷了。出於某種原因,它們返回一個默認構造的對象。 –
好吧,我修好了...... 我把(* this)添加到NumDays obj1; 並使其NumDays obj1(* this); 它現在就是這樣工作的。 – user3347541