java双目运算符重载,c++类的单目和双目运算符的重定义
這個里面需要注意的是對于雙目運(yùn)算符,像是加號,如果是復(fù)數(shù)加整數(shù)是一種情況,而整數(shù)加復(fù)數(shù)又是另一種情況,所以需要重定義兩次。
而對于單目運(yùn)算符,如果是前綴的,直接重定義就可以了,但是如果是后綴的,我們在聲明的時候,加上一個 int 就行了。
#include
using namespace std;
class Date
{
public :
Date() {
year=0;
month=0;
day=0;
}
Date(int y,int m,int d)
{
year = y;
month = m;
day = d;
}
void display()
{
cout<
}
friend Date operator+(int i, Date c);
friend Date operator+(Date c, int i);
Date operator++();
Date operator++(int);
private:
int year,month,day;
};
Date Date::operator++()
{
if (day+1>30) {
day %= 30;
if (month+1>12) {
month %= 12;
year++;
}
}
else
day++;
return *this;
}
Date Date::operator++(int)
{
Date temp(*this);
if (day+1>30) {
day %= 30;
if (month+1>12) {
month %= 12;
year++;
}
}
else
day++;
return temp;
}
Date operator+(int i,Date c)
{
int year_add = i / 360;
int month_add = i / 30;
int day_add = i % 30;
c.year += year_add;
c.month = c.month + month_add % 12;
if (c.month>12)
c.month -= 12;
c.day = c.day+day_add % 30;
if (c.day>30)
c.day -= 30;
return c;
}
Date operator+(Date c,int i)
{
int year_add = i / 360;
int month_add = i / 30;
int day_add = i % 30;
c.year += year_add;
c.month = c.month + month_add % 12;
if (c.month>12)
c.month -= 12;
c.day = c.day+day_add % 30;
if (c.day>30)
c.day -= 30;
return c;
}
int main()
{
Date a(2018,3,10),b;
int num=1000;
b=a+num;
b.display();
++b;
b.display();
a = b++;
a.display();
b.display();
system("pause");
return 0;
}
總結(jié)
以上是生活随笔為你收集整理的java双目运算符重载,c++类的单目和双目运算符的重定义的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 过河拆桥下一句是什么呢?
- 下一篇: 好听的帮会名字大全