北京网站建设价格行情,做一个国外的网站,韩国的汽车设计网站,简单介绍家乡网页html代码对于实现日期类中需要用到的例如#xff1a;构造函数#xff0c;析构函数#xff0c;运算符重载等内容#xff0c;已经在前面几篇文章中进行介绍#xff0c;故本文只给出关于类和对象中日期类的代码实现#xff0c;对于代码的原理不给予详细的解释#xff1a;
1.头文件… 对于实现日期类中需要用到的例如构造函数析构函数运算符重载等内容已经在前面几篇文章中进行介绍故本文只给出关于类和对象中日期类的代码实现对于代码的原理不给予详细的解释
1.头文件violent.h
#pragma once#includestdio.h
#includeiostream
#includeassert.h
#includestdbool.husing std::cout;
using std::cin;
using std::endl;class Date
{
public://构造函数函数名与类名相同没有返回值可以构成重载自动调用//针对内置类型不做处理针对自定义类型会自动调用其自己的构造函数Date(int year 1, int month 1, int day 1);//拷贝构造函数对于日期类可以不写//拷贝构造函数针对内置类型会完成值拷贝针对自定义类型会自动调用其自己的拷贝构造函数//Date(Date d1)//{// _year 2024;// _month 1;// _day 6;//}//类的比较运算函数bool operator(Date d);bool operator!(Date d);bool operator(Date d);bool operator(Date d);bool operator(Date d);bool operator(Date d);//获取年月份对应的日期int GetMonthDay(int _year, int _month);void Print();Date operator(int day);Date operator(int day);Date operator-(int day);Date operator-(int day);Date operator();Date operator(int);Date operator--();Date operator--(int);int operator-(Date d);//析构函数不是清除对象而是对对象中的资源进行清理作用方式与构造函数类似针对内置类型不作用//针对自定义类型会调用自己的析构函数//函数名是类名之前加上波浪线每个类中只能存在一个析构函数类生命周期结束会自动调用不能构成重载~Date();private:int _year;int _month;int _day;
};2.函数功能实现文件violent.c:
#define _CRT_SECURE_NO_WARNINGS 1#includeviolent.h//构造函数
Date::Date(int year, int month, int day)
{if ((year 1) || (month 12) || (month 1) || (day 1)){cout 日期信息非法 endl;}_year year;_month month;_day day;
}
//析构函数
Date:: ~Date()
{_year 0;_month 0;_day 0;
}void Date::Print()
{cout _year _month _day endl;
}
bool Date::operator(Date d)
{return _year d._year _month d._month _day d._day;
}bool Date::operator!(Date d)
{return !(*this d);
}bool Date::operator(Date d)
{if (_year d._year){return true;}else if ((_year d._year) (_month d._month)){return true;}else if ((_year d._year) (_month d._month) (_day d._day)){return true;}else{return false;}
}bool Date::operator(Date d)
{return ((*this d) || (*this d));
}bool Date::operator(Date d)
{return !(*this d);
}bool Date::operator(Date d)
{return !(*this d);}int Date::GetMonthDay(const int _year,const int _month)
{int Day[13] { 0,31,28,31,30,31,30,31,31,30,31,30,31 };if ((_month 2) (((_year % 4 0) (_year % 100 ! 0)) || (_year % 400 0))){return 29;}return Day[_month];
}//运算符重载会改变类
Date Date::operator(int day)
{_day _day day;while(_day GetMonthDay(_year,_month)){_day _day - GetMonthDay(_year, _month);_month;if (_month 12){_month 0;_year;}}return (*this);
}Date Date::operator(int day)
{Date tmp(*this);tmp tmp day;return tmp;
}Date Date::operator-(int day)
{_day _day - day;while (_day 0){_month--;if (_month 0){_year--;_month 12;}_day _day GetMonthDay(_year, _month); }return (*this);
}Date Date::operator-(int day)
{Date tmp(*this);tmp (tmp - day);return tmp;
}Date Date::operator()
{*this 1;return (*this);
}Date Date::operator(int)
{Date tmp (*this);*this 1;return tmp;
}Date Date::operator--()
{*this - 1;return (*this);
}Date Date::operator--(int)
{Date tmp(*this);(*this) - 1;return tmp;
}int Date::operator-(Date d)
{int flag 1;Date max (*this);Date min (d);if ((*this) d){max d;min (*this);flag -1;}int n 0;while (min ! max){min;n;}return n * flag;
}
3.功能测试文件Test.c:
#define _CRT_SECURE_NO_WARNINGS 1#includeviolent.hvoid Test1()
{Date d1(2024,1,6);d1.Print();Date d2(2024, 1, 6);d2.Print();Date d3(2024, 1, 15);cout 测试结果校验 endl;bool ret (d1d2);cout ret ret endl;cout 测试结果校验 ! endl;bool ret1 (d2 ! d1);cout ret1 ret1 endl;cout 测试结果校验 endl;bool ret2 (d3 d1);cout ret3 ret2 endl;cout 测试结果校验 endl;bool ret3 (d3 d1);bool ret4 (d2 d1);cout ret3 ret3 endl ret4 ret4 endl;cout 测试结果校验 endl;bool ret5 (d1 d3);bool ret6 (d2 d1);cout ret5 ret5 endl ret6 ret6 endl;cout 测试结果校验 endl;bool ret7 (d2 d3);cout ret7 ret7 endl;
}void Test2()
{cout endl 下面内容为Test2中的测试 endl;Date dd(2024, 1, 6);dd.Print();Date dd1(2024, 1, 6);cout 测试 endl;Date ret1 (dd 100);ret1.Print();cout 测试 endl;Date ret2 (dd1 100);ret2.Print();cout 测试- endl;Date ret3 (dd - 100);ret3.Print();cout 测试- endl;Date ret4 (dd1 - 100);ret4.Print();
}void Test3()
{cout endl 下面内容为Test3中的测试 endl;Date d3(2024, 1, 6);cout 测试d endl;Date ret1 (d3);Date d4(2024, 1, 6);ret1.Print();cout 测试d endl;Date ret2 (d4);ret2.Print();
}void Test4()
{cout endl 下面内容为Test4中的测试 endl;Date d(2024, 1, 6);Date d2(2024, 1, 6);cout 测试--d endl;Date ret1 (--d);ret1.Print();cout 测试d-- endl;Date ret2 (d2--);ret2.Print();
}void Test5()
{Date d1(2024, 1, 6);Date d2(2024, 4, 15);int ret1 d2 - d1;cout ret1 endl;
}
int main()
{Test1();Test2();Test3(); Test4();Test5();
} 4. 代码运行结果展示