C++类与对象之日期类如何实现
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍C++类与对象之日期类如何实现,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 实现前的铺垫在实现前,我们要先把类写好,类中包含成员函数和成员变量。对于日期类
千家信息网最后更新 2026年10月31日C++类与对象之日期类如何实现
这篇文章主要介绍C++类与对象之日期类如何实现,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1. 实现前的铺垫
在实现前,我们要先把类写好,类中包含成员函数和成员变量。对于日期类来说,拷贝构造和赋值运算符可以不写,但是我在类中写了,也没关系哦。
#includeusing std::cout;using std::endl;using std::cin;class Date{public://构造函数 Date(int year = 0, int month = 1, int day = 1) { if (year >= 0 && month > 0 && month<13 && day>0 && day <= GetMonthDay(year, month)) { _year = year; _month = month; _day = day; } else { cout << "输入日期不和法" << endl; } }//拷贝构造 Date(const Date& d) { _year = d._year; _month = d._month; _day = d._day; }//赋值运算符 Date& operator=(const Date&d) { if (this != &d) { _year = d._year; _month = d._month; _day = d._day; } return *this; } //判断合法性 int GetMonthDay(int year, int month); //输出日期 void prit(); //日期+= Date& operator+=(int day); //日期+ Date operator+(int day); //日期-= Date& operator-=(int day); //日期- Date operator-(int day); //日期== bool operator==(const Date& d); //日期> bool operator>(const Date& d); //日期!= bool operator != (const Date& d); //< bool operator < (const Date& d); //>= inline bool operator >= (const Date& d); //<= bool operator <= (const Date& d); //++d Date& operator++(); //d++ Date& operator++(int); //--d Date& operator--(); //d-- Date& operator--(int); //日期-日期 int operator-(const Date& d);private: int _year; int _month; int _day;};//给出当年当月的天数inline int Date::GetMonthDay(int year, int month){ static int dayArray[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; dayArray[2] = 28; if (month == 2 && ((year % 4 == 0) && (year % 100 != 0)) || year % 400 == 0) { dayArray[2] = 29; } return dayArray[month];}
2. 日期类的实现
在实现前我们先要利用复用,复用就是把已经写好的函数来完成要完成的函数。
2.1 日期+=天数
在这里,就复用了(日期-=天数的)函数
对于+=,当加一个天数是为正的时候(如:100),
但当加的天数为负数时(如:-100)
这里就要先判断day是否为正负数
如果为正数就正常加,如果是负数就复用-=操作符重载函数
详细请看下面:
Date& Date::operator+=(int day){ if (day > 0) { _day += day; while (_day > GetMonthDay(_year, _month)) { _day -= GetMonthDay(_year, _month); _month++; if (_month > 12) { _year++; _month = 1; } } } else { *this -= (-day); } return *this;}2.2 日期-=天数
这里也和+=操作符重载函数一样,都要判断day是否为正负值
Date& Date::operator-=(int day){ if (day > 0) { _day -= day; while (_day <= 0) { _month--; _day += GetMonthDay(_year, _month); if (_month == 0) { _year--; _month = 12; } } } else { *this += (-day); } return *this;}2.3 日期-天数
减天数,自己没变,所以要创个临时变量。
Date Date::operator-(int day){ Date ret(*this); ret -= day; return *ret;}2.4 日期+天数
与减天数同理
Date Date::operator+(int day){ Date ret(*this); ret += day; return ret;}2.5 前置++
对于前置和后置,在函数命名的时候,后置的参数列表多一个int来占位。
Date& Date::operator++(){ *this += 1; return *this;}2.6 后置++
Date& Date::operator++(int){ Date tmp(*this); tmp += 1; return *this;}2.7 前置-
Date& Date::operator--(){ *this -= 1; return *this;}2.8 后置-
Date& Date::operator--(int){ Date tmp(*this); tmp -= 1; return *this;2.9 >运算符重载
bool Date::operator>(const Date& d){ if (_year > d._year) { return true; } else if (_year == d._year) { if (_month > d._month) { return true; } else if (_month == d._month) { if (_day > d._day) { return true; } } } return false;}2.10 ==运算符重载
bool Date::operator==(const Date& d){ return _year == d._year &&_month == d._month &&_day == d._day;}2.11 >=运算符重载
这里就开始复用>和==的操作符重载函数
bool Date::operator >= (const Date& d){ return (*this > d) || (*this == d);}2.12 <运算符重载
bool Date::operator < (const Date& d){ return !(*this>d);}2.13 <=运算符重载
bool Date::operator <= (const Date& d){ return (*this < d) || (*this == d);}2.14 !=运算符重载
bool Date::operator != (const Date& d){ return !(*this == d );}2.15 日期-日期 返回天数
int Date::operator-(const Date& d){ Date max = *this; Date min = d; int flag = 1; if (max < min) { max = d; min = *this; flag = -1; } int m = 0; while (max!=min) { ++min; ++m; } return m*flag;}2.16 输出
void Date::prit(){ cout << _year << "年" << _month << "月" << _day << "日" << endl;}以上是"C++类与对象之日期类如何实现"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
日期
天数
函数
运算符
运算
复用
操作符
负数
对象
C++
内容
变量
成员
时候
篇文章
不和
没关系
价值
兴趣
参数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网金融科技
互联网科技股
新华互联网科技学院
华中科技大学互联网
未来的互联网科技
互联网金融和金融科技
互联网金融科技委员会
科技与互联网的利与弊
移动互联网科技股
来此购互联网科技有限公司
受益于互联网科技的高速发展
赶超互联网科技 微信多开
华夏互联网科技业
苏州铭阳互联网科技有限公司
科技类公司包括互联网吗
工业互联网等科技实现智能化赋能
厦门江牛科技互联网
吉林省码上互联网科技电话
互联网科技手抄报图片
科技互联网专业务虚会材料
百单网互联网科技有限公司怎么样
互联网科技的发展
西安互联网科技
齐家互联网科技
奇酷互联网络科技公司
中正互联网科技招聘
工业互联网等科技实现智能化赋能
锡山区互联网智能科技产品供应
领航科技大厦互联网公司
工业互联网科技成果转化