一、類的描述
類描述了具有共同特徵的一組物件,這組物件的屬性和行為相同,只不過具體物件的屬性值等有所區別。
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...