1,主要內容
多採用符號過載的方法對日期類進行基本操作。包括日期的計算和
2,操作符過載為成員函式
當乙個操作符被過載為成員函式時,在使用這個操作符時會隱式的把操作符左邊的類物件的位址作為第乙個引數傳入函式,
例如:乙個物件t1, t1+1, 就等於operator+(&t1 , 1)
對於前置++,--運算子,因為是單目運算子,並不一定去尋找操作符左邊的物件,而是右邊的物件。
3,日期類的宣告
#ifndef __date_h__
#define __date_h__
#includeusing namespace std;
class date
;
4,日期類成員函式,輸出流友員函式的定義
#include"date.h"
date::date(int year,int month,int day)
:_year(year)
,_month(month)
,_day(day)
{}date::date(const date& d)
:_year(d._year)
,_month(d._month)
,_day(d._day)
{}void date::print()
}ret._day=sum_day;
return ret;}//
////當前日期days天前是什麼日期?
date date:: operator-(int days)
sub_day+=getmonthday(ret._year,ret._month);
} ret._day=sub_day;
return ret;
}// 兩個日期之間差了多少天?
int date:: operator-(const date& d)
return false;
}bool date::operator
{ if((_year
5,為什麼不能過載流輸入》操作符和流輸出操作符《為成員函式,只能過載為友員函式和普通函式?
答:將流輸出《操作符過載為成員函式 注:ostream是輸出流類,_cout是乙個類物件
ostream& date:: operator<
{ _cout<<_year>
return _cout;
進行測試
#include"date.h"
int main()
{ date d (2000,2,2);
cout結果失敗,
重新測試
#include"date.h"
int main()
{ date d (2000,2,2);
d<
結果正確
分析原因:
當把輸入流函式過載為成員函式時,引數列表已經固定了,先將左運算元位址作為第乙個引數,右運算元作為第二個引數
所以正確的使用方式是 d<
c 日期類 過載
include include using namespace std class date date date a int gety int getm int getd void set int y,int m,int d date operator int date operator int d...
日期類與時間類定義(運算子過載應用)
日期類定義 運算子過載應用 class data 起初只是用來表示出版日期,後來發現借閱與歸還日期都可用 data int year1,int month1,int day1 year year1 month month1 day day1 friend ostream operator ostre...
日期時間相關工具類
計算2個日期之間相差幾天 public static int gettwodatefordays date exitdatefrom,date exitdateto return days 計算2個日期之前相差幾個月 2011 01 2012 09 param begin param end ret...