C 日期類Date的定義

2021-08-08 14:31:02 字數 4807 閱讀 1339

一、類的描述

類描述了具有共同特徵的一組物件,這組物件的屬性和行為相同,只不過具體物件的屬性值等有所區別。

c++中類的定義一般分為類的說明部分和類的實現部分。其中類說明的格式如下:

class

其中,class是關鍵字。

是使用者自定義的

c++識別符號,

visual c++

中類名的風格是所有類的名字都以大寫字母

c開頭,表示這個類的名字,例如

cbook

,cstudent

等。被花括號括起來的部分稱作類體。注意,類說明是以分號作為結束的。

二、類date的定義

#include#includeusing namespace std;

//定義日期類

class date

void display(); //顯示函式

void setdate(); //獲取日期函式

void adddate(); //日期加一函式

void subdate(); //日期減一函式

date& operator=(const date& d); //賦值

date& operator++(); // 前置++

date operator++(int); // 後置++

date& operator--(); //前置--

date operator--(int); //後置--

date operator+(int days); //days天之後的日期

date operator-(int days); // days天之前的日期

int operator-( date& d); // 兩個日期之間的距離 (方式一)

friend int subdatedays(date &x,date &y); // (方式二)兩個日期之間的距離

bool operator==(const date& d);

bool operator!=(const date& d);

bool operator>(const date& d);

bool operator<(const date& d);

private:

int _year;

int _month;

int _day;

};

void date::display()      //顯示函式

void date::setdate() //獲取日期函式

if (day<1 || day>31)

if (month == 2)

}else

}} _year = year;

_month = month;

_day = day;

}void date::adddate() //日期加一函式

break;

case 12:

if (_day < 31)

_day += 1;

else

break;

case 2:

if ((_year % 4 == 0 && _year % 100 != 0) || _year % 400 == 0)

}else

}break;

case 4:

case 6:

case 9:

case 11:

if (_day < 30)

_day += 1;

else

break; }}

void date::subdate() //日期減一函式

else

_day -= 1;

break;

case 3:

if ((_year % 4 == 0 && _year % 100 != 0) || _year % 400 == 0)

else

}else

else

}break;

case 2:

case 4:

case 6:

case 9:

case 11:

if (_day == 1)

else

_day -= 1;

break;

case 8:

if (_day == 1)

else

_day -= 1;

break;

case 5:

case 7:

case 10:

case 12:

if (_day == 1)

else

_day -= 1;

break;

}}

//

date& date::operator=(const date& d)

date& date::operator++() //前置++

date date::operator++(int) //後置++

date& date::operator--() //前置--

date date::operator--(int) //後置--

date date::operator+(int days) //days天之後的日期

return temp;

}date date::operator-(int days) //days天之前的日期

return temp;

}

//兩個日期相隔的天數

int date::operator-(date & y)        //兩個日期相隔的天數(方式一)

if (y._year==x._year)

if (y._month > x._month)

if (y._year==x._year)

if (y._month==x._month)

if (y._day > x._day)

int days = 0; //天數計數器

//把從y那一年到x的前一年所有年的天數累加

for (int i = y._year; i < x._year; i++)

//去掉y那年已過的天數,即從一月到y._month前乙個月的天數和y._day的和

for (int j = 1; j < y._month; j++)

else

days -= 30;

} days -= y._day;

//加上x那年已過的天數

for (int k = 1; k < x._month; k++)

else

days += 30;

} days += x._day;

return days;

}int subdatedays(date &x, date &y) //日期相減函式(方式二)

if (y._year==x._year)

if (y._month > x._month)

if (y._year==x._year)

if (y._month==x._month)

if (y._day > x._day)

int days = 0; //天數計數器

//把從y那一年到x的前一年所有年的天數累加

for (int i = y._year; i < x._year; i++)

//去掉y那年已過的天數,即從一月到y._month前乙個月的天數和y._day的和

for (int j = 1; j < y._month; j++)

else

days -= 30;

} days -= y._day;

//加上x那年已過的天數

for (int k = 1; k < x._month; k++)

else

days += 30;

} days += x._day;

return days;

}

bool型的過載

bool date::operator==(const date&d)

bool date::operator!=(const date& d) }}

bool date::operator>(const date& d)

else

return 0;

} else

return 0;

}bool date::operator<(const date& d)

else

return 0;

} else

return 0;

}

主函式部分

void test1()

void test2()

void test3()

void test4()

void test5()

int main()

date日期類實現 C

include include includeusing namespace std class date 拷貝構造 date const date d 賦值運算子過載 date operator const date d return this 運算子過載 date operator int da...

C 題目 定義乙個日期類Date

題目內容 定義乙個日期類date,包含年 月 日三個資料成員 int 定義帶有3個引數的建構函式,以及乙個求日期是當年的第幾天的成員函式和輸出日期的成員函式,日期的顯示格式為年 月 日。編寫主函式進行測試。每年各月天數分別為31,28,31,30,31,30,31,31,30,31,30,31,閏年...

Date類,實現日期類

1 概述 類 date 表示特定的瞬間,精確到毫秒。2 構造方法 public date public date long date 把乙個long型別的毫秒值轉換成乙個日期物件 3 成員方法 public long gettime 獲取乙個日期物件物件毫秒值 public void settime...