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

网站开发 手机 电脑比较有创意的广告

网站开发 手机 电脑,比较有创意的广告,做哪类网站没有版权问题,重庆做网站那里好在上篇博客中我们已经学习了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.zqtcl.cn/news/525888/

相关文章:

  • 广西南宁建设职业学图书馆网站wordpress 黑色主题
  • 网站建设需要准备那些内容阜阳微商城网站建设
  • flash全屏网站模板企业网站示例
  • 制作手机端网站开发厦门网站设计定制
  • 佛山网站开发公司做网站在什么地方发帖子呢
  • 无网站可以做cpc吗wordpress 12张表
  • 有些中小网站cnzz网站排名是怎么做的
  • 深圳做微商网站的公司高端做网站价格
  • 在线原型设计网站wordpress菜单页内跳转
  • 做电影网站要买什么抖音推广怎么收费
  • 专业的公司网站开发网站按钮设计
  • 南宁网站建设是什么深圳公司有哪些
  • 杭州手机申请网站登录怎么做电子商务网站
  • 青岛个人接网站建设wordpress 转载文章
  • 网上做网站任务网络营销传播的核心内容
  • 做黑界头像网站成考过来人的忠告
  • 宁波网站建设是哪家便宜织梦网站数据库备份文件夹
  • 在北京大学生做家教的网站淘宝网页
  • 英铭网站建设网站如何推广引流
  • 关于电子商务网站建设的现状企业公示信息查询系统山西
  • 网站开发 翻译长春建站企业
  • dedecms网站网站解析一般什么时候
  • 制作网站的技术北京律师24小时电话
  • 可拖拽 网站建设如何做自媒体和网站签约赚点击
  • 做网站选哪个语言怎么登录百度app
  • 国发网站建设网站优化主要优化哪些地方
  • 快速微信网站开发定制网站建设费用预算
  • 网站制作叫什么知名网站建设制作
  • 网络营销网站建设公司h5应用
  • 网站开发合同要上印花税吗南江红鱼洞水库建设管理局网站