当前位置: 首页 > news >正文

广西网站建设贵吗seo排名培训学校

广西网站建设贵吗,seo排名培训学校,网页游戏传奇世界开服表,网站营销是什么在上篇博客中我们已经学习了C中的运算符重载#xff0c;我们说#xff0c;操作符只能对于内置类型进行操作#xff0c;对自定义类型我们需要自己定义函数去实现一系列的操作 那么这篇博客我们就专门把日期这个类单独拿出来写一下它都有哪些有意义的可以重载的运算符#xf…在上篇博客中我们已经学习了C中的运算符重载我们说操作符只能对于内置类型进行操作对自定义类型我们需要自己定义函数去实现一系列的操作 那么这篇博客我们就专门把日期这个类单独拿出来写一下它都有哪些有意义的可以重载的运算符这个函数我们要放到类里面为了访问私有的成员变量但是函数声明和定义可以分到两个文件中写只需要标识一下它属于哪个类就行。还有我们之前说过的一点缺省参数只能声明给定义不用给因为编译器怕你给的不一样。 下面一个类当中首先是成员变量年月日我就不说了下面是构造函数我们就写一个全缺省的函数默认不传参数年月日都是一但是我们要判断传过来的数字是否合法不合法要做出提醒可以assert断言也可以就打印一下。 //声明 Date(int year 1, int month 1, int day 1); //定义 Date::Date(int year, int month , int day ) {_year year;_month month;_day day;if (_year 1 || _month 1 || _month12 || _day1 || _dayGetMonthDay(_year, _month)) {cout _year 年 _month 月 _day 日;cout 日期非法 endl;} }下面比较两个日期的大小和是否相等其实逻辑就比较简单了写上一个后边的直接赋用就行 比如说 bool Date:: operator(const Date n) {return _year n._year _month n._month _day n._day; }bool Date::operator!(const Date n) {return !(*this n); }写了等于那么不等于不就是它的相反嘛 下面的大于小于也是同理 bool Date:: operator(const Date n) {if (_year n._year) {return true;}if (_year n._year _month n._month) {return true;}if (_year n._year _month n._month _day n._day) {return true;}return false; }bool Date::operator(const Date n) {return ((*this n) || (*this n)); }bool Date::operator(const Date n) {return !(*this n); }bool Date:: operator(const Date n) {//return *this n || *this n;return !(*this n); }下面是加减运算首先日期加日期是没有意义的但是日期加减天数是有意义的这个该如何去加减呢我们可以先把天数加到年月日的日数上如果合法就不用动了如果多余本月的该有的天数就进位到月上。为了方便就得有一个得到该年该月的天数的一个函数 int Date :: GetMonthDay(int year, int month) {assert(year 1 month 1 month 12);int monthArray[13] { 0,31,28,31,30,31,30,31,31,30,31,30,31 };if ((month 2) (((year % 400) 0) || ((year % 4) 0 (year % 100) ! 0))) {return 29;}return monthArray[month]; }下边就是日期加减一个天数 Date Date:: operator(int day) {if (day 0) {return *this - (-day);}_day day;while (_day GetMonthDay(_year, _month)) {_day - GetMonthDay(_year, _month);_month;if (_month 13) {_year;_month 1;}}return *this; }Date Date:: operator(int day) {Date tmp(*this);tmp day;return tmp; }Date Date:: operator-(int day) {if (day 0) {return *this (-day);}_day - day;while (_day 0) {--_month;if (_month 0) {--_year;_month 12;}_day GetMonthDay(_year, _month);}return *this; }Date Date:: operator-(int day) {Date tmp(*this);tmp - day;return tmp; }我这里的加减是赋用的加等和减等当然了我们也可以让加等和减等赋用加减我们也来实现一下然后看看这两种情况哪个好 Date Date:: operator(int day) {Date tmp*this;tmp._day day;while (tmp._day GetMonthDay(tmp._year, tmp._month)) {tmp._day - GetMonthDay(tmp._year, tmp._month);tmp._month;if (tmp._month 13) {tmp._year;tmp._month 1;}}return tmp; } Date Date:: operator(int day) {*this *this day;return *this; } Date Date::operator-(int day) {Date tmp(*this);tmp._day - day;while (tmp._day 0) {--tmp._month;if (tmp._month 0) {tmp._year--;tmp._month 12;}tmp._day GetMonthDay(tmp._year, tmp._month);}return tmp; } Date Date:: operator-(int day) {*this *this - day;return *this; }我们先看第一种情况加等其实是不需要进行拷贝的而加则需要拷贝两次。第二种情况加要拷贝两次而加等要拷贝三次所以我们可以看出第一种情况更好一些 我们这里的加等还有一个问题如果我们写的是加等一个负数或者说减等一个负数时就会有问题这时就会有问题我们只需要转到相反的就行了就类似这样 Date Date:: operator-(int day) {if (day 0) {return *this - (-day);}下面就是了但是有前置有后置这时我们就规定后置要在形参上写上一个int写别的不行 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-(const Date d) {int flag -1;Date min *this;Date max d;if (*this d) {min d;max *this;flag 1;}int n 0;while (min max) {min;n;}return n*flag; }要想效率更高些就要整年整年的加后面的零碎的天数就从1月1日开始数大的日期就加上小的日期就减去 int Date::operator-(const Date d) {int flag 1;Date max *this;Date min d;if (*this d) {max d;min *this;flag -1;}int n 0;int y min._year;while (y ! max._year) {if (y % 4 0 y % 100 ! 0 || y % 400 0) {n 366;}else {n 365;}y;}int m1 1;int m2 1;while (m1 max._month) {n GetMonthDay(max._year, m1);m1;}while (m2 min._month) {n - GetMonthDay(min._year, m2);m2;}n n max._day - min._day;return n; }下面是Date.h中所有代码 #includeiostream #includeassert.h using namespace std; class Date { public:Date(int year 1, int month 1, int day 1);void Print();int GetMonthDay(int year, int month);bool operator(const Date n);bool operator!(const Date n);bool operator(const Date n);bool operator(const Date n);bool operator(const Date n);bool operator(const Date n);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-(const Date d); private:int _year;int _month;int _day; };Date.cpp文件中的代码 #includeDate.h Date::Date(int year, int month , int day ) {_year year;_month month;_day day;if (_year 1 || _month 1 || _month12 || _day1 || _dayGetMonthDay(_year, _month)) {cout _year 年 _month 月 _day 日;cout 日期非法 endl;} }void Date::Print() {cout _year 年 _month 月 _day 日 endl; }int Date :: GetMonthDay(int year, int month) {assert(year 1 month 1 month 12);int monthArray[13] { 0,31,28,31,30,31,30,31,31,30,31,30,31 };if ((month 2) (((year % 400) 0) || ((year % 4) 0 (year % 100) ! 0))) {return 29;}return monthArray[month]; }bool Date:: operator(const Date n) {return _year n._year _month n._month _day n._day; }bool Date::operator!(const Date n) {return !(*this n); }bool Date:: operator(const Date n) {if (_year n._year) {return true;}if (_year n._year _month n._month) {return true;}if (_year n._year _month n._month _day n._day) {return true;}return false; }bool Date::operator(const Date n) {return ((*this n) || (*this n)); }bool Date::operator(const Date n) {return !(*this n); }bool Date:: operator(const Date n) {//return *this n || *this n;return !(*this n); }Date Date:: operator(int day) {if (day 0) {return *this - (-day);}if (day 0) {return *this - (-day);}_day day;while (_day GetMonthDay(_year, _month)) {_day - GetMonthDay(_year, _month);_month;if (_month 13) {_year;_month 1;}}return *this; }Date Date:: operator(int day) {Date tmp(*this);tmp day;return tmp; }Date Date:: operator-(int day) {if (day 0) {return *this - (-day);}if (day 0) {return *this (-day);}_day - day;while (_day 0) {--_month;if (_month 0) {--_year;_month 12;}_day GetMonthDay(_year, _month);}return *this; }Date Date:: operator-(int day) {Date tmp(*this);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-(const Date d) { // int flag -1; // Date min *this; // Date max d; // if (*this d) { // min d; // max *this; // flag 1; // } // int n 0; // while (min max) { // min; // n; // } // return n*flag; //} int Date::operator-(const Date d) {int flag 1;Date max *this;Date min d;if (*this d) {max d;min *this;flag -1;}int n 0;int y min._year;while (y ! max._year) {if (y % 4 0 y % 100 ! 0 || y % 400 0) {n 366;}else {n 365;}y;}int m1 1;int m2 1;while (m1 max._month) {n GetMonthDay(max._year, m1);m1;}while (m2 min._month) {n - GetMonthDay(min._year, m2);m2;}n n max._day - min._day;return n; }
http://www.dnsts.com.cn/news/3075.html

相关文章:

  • 网站网上商城建设seo优化个人博客
  • 建站宝盒购买怎么做优化
  • 泉州做网站的公司最佳磁力搜索天堂
  • 做网站要什么知识搜索引擎推广有哪些
  • 怎么做软件推广赚钱seo优化网站快速排名
  • 合肥做网站建设公司福建seo学校
  • 山西做二级建筑资料在哪个网站成人职业培训学校
  • 邦派巴洛特网站是谁做的呀seo网站结构优化
  • 网页版微信可以传文件吗湖北seo服务
  • 推广类软文seo推广主要做什么
  • ps做网站动图建站教程
  • 网站目录结构设计网络营销与传统营销有哪些区别
  • 帮助中心网站源码条友网
  • 网站制作培训一般要多少钱网站主题
  • 优质的常州网站建设吸引人的软文标题例子
  • 网站建设和架构线上渠道推广有哪些方式
  • 跨境独立站建站企业官网定制设计
  • 领域网站建设营销网站建设规划
  • 动态网站设计分析百度推广联系方式
  • 网站开发课程百度云湖州网站建设制作
  • 免费发布信息的平台有哪些微信公众号seo
  • 企业公示信息查询系统 江苏seo是什么职业做什么的
  • 商城网站开发技术有哪些中国最新军事新闻
  • 线上渠道推广有哪些方式张北网站seo
  • 特定ip段访问网站代码沈阳百度推广排名优化
  • 外贸网站域名能用cn做后缀吗广东培训seo
  • 漯河装修公司网站建设真正永久免费的建站系统有哪些
  • 小程序免费制作平台登录石家庄网络推广优化
  • 比特币做空网站品牌策划方案怎么做
  • 海南城乡建设庁网站上海短视频seo优化网站