自己给自己网站做seo,长宁区网站建设公司,做动画的网站有哪些,wordpress本地到前言#xff1a;在类和对象比较熟悉的情况下#xff0c;我们我们就可以开始制作日期表了#xff0c;实现日期类所包含的知识点有构造函数#xff0c;析构函数#xff0c;函数重载#xff0c;拷贝构造函数#xff0c;运算符重载#xff0c;const成员函数
1.日期类的加减…
前言在类和对象比较熟悉的情况下我们我们就可以开始制作日期表了实现日期类所包含的知识点有构造函数析构函数函数重载拷贝构造函数运算符重载const成员函数
1.日期类的加减运算
#define _CRT_SECURE_NO_WARNINGS 1
#includedata.h
class Data
{
public://获取某年某月的天数int GetMonthday(int year, int month){int days[13] { 0,31,28,31,30,31,30,31,31,30,31,30,31 };int day days[month];if (month 2){if ((year % 400 0) || (year % 4 0 year % 100 ! 0)){day 1;}}return day;}Data(int year1900,int month1,int day1){_year year;_month month;_day day;}//拷贝构造//Data(const Data d);//日期赋值Data operator (const Data d) const{_year d._year;_month d._month;_day d._day;return *this;}Data operator-(int day){_day - day;while (_day 0){if (_month 1){_year--;_month 12;}else{_month--;}_day GetMonthday(_year, _month) _day;}return *this;}Data operator(int day){_day day;while (_day GetMonthday(_year, _month)){_day _day - GetMonthday(_year, _month);_month;if (_month 13){_year;_month 1;}}return *this;}void Print(const Data d){cout _year 年 _month 月 _day 日 endl;}private:int _year;int _month;int _day;};int main()
{Data d1(2023,12,31);Data d2(d1);d2 d2.operator(10000);d2.Print(d2);return 0;
} 2 日期类的运算符重载 类里面有默认的拷贝构造函数不显含还有默认的构造函数不显含你也可以把这个默认的构造函数写出来只是不显含的构造函数对类里面的内置类型不做处理自定义类型会调用它的构造函数就会处理一下。 //日期赋值
Data operator (const Data d)
{_year d._year;_month d._month;_day d._day;return *this;
}Data operator-(int day)
{_day - day;while (_day 0){if (_month 1){_year--;_month 12;}else{_month--;}_day GetMonthday(_year, _month) _day;}return *this;
}Data operator(int day)
{_day day;while (_day GetMonthday(_year, _month)){_day _day - GetMonthday(_year, _month);_month;if (_month 13){_year;_month 1;}}return *this;
}Data operator()//前置
{_day;if (_day GetMonthday(_year, _month)){_day _day - GetMonthday(_year, _month);_month;if (_month 13){_year;_month 1;}}return *this;
}Data operator(int)//后置
{Data d *this;_day;return d;
}//运算符重载比较两个日期的大小
bool operator(const Data d)
{return ((_year d._year) || (_yeard._year_month d._month) || (_year d._year _month d._month_day d._day));
}bool operator(const Data d)
{return !((_year d._year) || (_year d._year _month d._month) || (_year d._year _month d._month _day d._day));
}bool operator(const Data d)
{return ((_year d._year) || (_year d._year _month d._month) || (_year d._year _month d._month _day d._day));
}bool operator(const Data d)
{return !((_year d._year) || (_year d._year _month d._month) || (_year d._year _month d._month _day d._day));}bool operator!(const Data d)
{return !((_year d._year) (_month d._month) (_day d._day));
}int operator-(Data d)
{Data max *this;Data min d;int flag 1;if (*this d){max d;min *this;flag -1;}int n 0;while (min ! max){min;n;}return flag * n;
}
3 我们将运算符重载的函数和两个日期相差的天数进行配合计算
int operator-(Data d)
{Data max *this;Data min d;int flag 1;if (*this d){max d;min *this;flag -1;}int n 0;while (min ! max){min;n;}return flag * n;
}int main()
{Data d1(2023,12,31);//Data d2(d1);Data d2(1900,11,30);//d2 d2.operator(10000);d2.Print(d2);cout d2.operator-(d1) endl;return 0;
} 所有源码的实现如下
data.h#pragma once
#includeiostream
using namespace std;
class Data
{
public://获取某年某月的天数int GetMonthday(int year, int month){int days[13] { 0,31,28,31,30,31,30,31,31,30,31,30,31 };int day days[month];if (month 2){if ((year % 400 0) || (year % 4 0 year % 100 ! 0)){day 1;}}return day;}Data(int year 1900, int month 1, int day 1){_year year;_month month;_day day;}//拷贝构造//Data(const Data d);//日期赋值Data operator (const Data d);Data operator-(int day);Data operator(int day);Data operator();//前置Data operator(int);//后置//运算符重载比较两个日期的大小bool operator(const Data d);bool operator(const Data d);bool operator(const Data d);bool operator(const Data d);bool operator!(const Data d);int operator-(Data d);void Print(const Data d);private:int _year;int _month;int _day;};data.cpp#define _CRT_SECURE_NO_WARNINGS 1
#includedata.h
Data Data::operator (const Data d)
{_year d._year;_month d._month;_day d._day;return *this;
}Data Data::operator-(int day)
{_day - day;while (_day 0){if (_month 1){_year--;_month 12;}else{_month--;}_day GetMonthday(_year, _month) _day;}return *this;
}Data Data::operator(int day)
{_day day;while (_day GetMonthday(_year, _month)){_day _day - GetMonthday(_year, _month);_month;if (_month 13){_year;_month 1;}}return *this;
}Data Data::operator()//前置
{_day;if (_day GetMonthday(_year, _month)){_day _day - GetMonthday(_year, _month);_month;if (_month 13){_year;_month 1;}}return *this;
}Data Data::operator(int)//后置
{Data d *this;_day;return d;
}//运算符重载比较两个日期的大小
bool Data::operator(const Data d)
{return ((_year d._year) || (_year d._year _month d._month) || (_year d._year _month d._month _day d._day));
}bool Data::operator(const Data d)
{return !((_year d._year) || (_year d._year _month d._month) || (_year d._year _month d._month _day d._day));
}bool Data::operator(const Data d)
{return ((_year d._year) || (_year d._year _month d._month) || (_year d._year _month d._month _day d._day));
}bool Data::operator(const Data d)
{return !((_year d._year) || (_year d._year _month d._month) || (_year d._year _month d._month _day d._day));}bool Data::operator!(const Data d)
{return !((_year d._year) (_month d._month) (_day d._day));
}int Data::operator-(Data d)
{Data max *this;Data min d;int flag 1;if (*this d){max d;min *this;flag -1;}int n 0;while (min ! max){min;n;}return flag * n;
}void Data::Print(const Data d)
{cout _year 年 _month 月 _day 日 endl;
}int main()
{Data d1(2023,12,31);//Data d2(d1);Data d2(1900,11,30);//d2 d2.operator(10000);d2.Print(d2);cout d2.operator-(d1) endl;return 0;
}