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

中小企业建站的方法石家庄seo推广

中小企业建站的方法,石家庄seo推广,3万网站建设费会计分录,软件工程师报名1.变量定义 对于一个日期的记录我们需要年,月,日来进行表示,所以我们定义_year,month,day,这三个变量来进行表示。 我们同时还需要定义三个我文件,一个test.cpp,Date.h,Date.cpp。 我们类的定义和函数声明放在Date.…

1.变量定义

对于一个日期的记录我们需要年,月,日来进行表示,所以我们定义_year,month,day,这三个变量来进行表示。

我们同时还需要定义三个我文件,一个test.cpp,Date.h,Date.cpp。

我们类的定义和函数声明放在Date.h头文件里面。

我们函数的定义放在Date.cpp里面。

实现一个函数功能后放在test.cpp里面进行测试查看是否正确。

class Date
{	
private:int _year;int _month;int _day;
};

由于函数的成员变量是不可以直接访问的所以我们设置为私有。 

2.功能函数(操作符重载)

日期类里面的功能需要设计日期比较,日期推算,操作符+的重载,-的重载,++,--,流插入,流提取,=,-=,+=,>,<,<=,>=,!=,==,对这些操作符的重载。 

2.1拷贝构造

由于我们日期类的构造都是使用的内置类型没有自定义类型所以只需要使用构造函数就可以满足了

Date::Date(int year, int month, int day)
{_year = year;_month = month;_day = day;
}

2.2日期比较大小

我们再进行日期比较大小时只需要写两个操作符重载然后进行复用就可以了。我们需要实现一个<的操作符重载和一个==的操作符重载就可以了,其他的操作符重载就进行这两操作符进行复用就可以了。

bool Date::operator<(const Date& d)
{if (_year < d._year){return true;}else if (_month < d._month){return true;}else if (_day < d._day){return true;}else{return false;}
}
bool Date::operator>(const Date& d)
{return !(*this < d) && (*this != d);
}
bool Date::operator<=(const Date& d)
{return (*this < d) || (*this == d);
}
bool Date::operator>=(const Date& d)
{return (*this > d) || (*this == d);
}
bool Date::operator==(const Date& d)
{return _year == d._year&& _month == d._month&& _day == d._day;
}
bool Date::operator!=(const Date& d)
{return !(*this == d);
}Date& Date::operator=(Date& d)
{this->_year = d._year;this->_month = d._month;this->_day = d._day;return *this;}

2.3日期加减操作

我们要实现一个用日期加上一个天数的方式来获得一个日期,或者减去一个日期的方式来获得一个日期。

先来实现+=

Date& Date::operator+=(int day)
{int MonthArr[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };_day += day;while (_day > MonthArr[_month]){MonthArr[2] = 28;if (_year % 4 == 0 && _year % 100 != 0 || _year % 400 == 0){MonthArr[2] = 29;}if (_day > MonthArr[_month]){_day -= MonthArr[_month];_month++;}else if (_month > 12){_year++;}}return *this;
}

-=:

Date& Date::operator-=(int day)
{int MonthArr[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };_day -= day;while (_day <1){MonthArr[2] = 28;if (_year % 4 == 0 && _year % 100 != 0 || _year % 400 == 0){MonthArr[2] = 29;}if (_day < 1){_month--;_day += MonthArr[_month];			}else if (_month < 1){_year--;}}return *this;
}

我们有了+=和-=来实现加就太容易了,可以直接套用+=,-=。我们要获得一个日期减后(加后)的一个新日期我们的返回值就不能再使用引用了的方式了,这样的话我们的新变量只是以前的一个别名,会改变以前的那个变量。所以会使用他的拷贝构造。

+和-:

Date Date:: operator+(int day)
{Date temp = *this;temp += day;return temp;
}Date Date:: operator-(int day)
{Date temp = *this;temp -= day;return temp;
}

2.4++和--的操作

我们有了+=可以使用+=来实现++,就是对this*+=1,但是我们这样实现出来的是前置++,要想实现后置++就需要在后面函数传参的地方加一个int。这样才可以实现后置++。--是同理的。

Date& Date:: operator++()
{return (*this) += 1;
}Date& Date:: operator--()
{return (*this) -= 1;
}Date Date::operator++(int)
{Date temp = *this;*this += 1;return temp;
}Date Date::operator--(int)
{Date temp = *this;*this -= 1;return temp;
}

2.5流插入,流提取操作符重载

我们需要对类里面的私有变量进行操作的时候我们需要流插入流提取的变量,但是放在类里面会将函数的this指针当作是第一个变量,我们把函数放在类外面的时候有访问不到私有变量。我们就要使用友元函数来对其声明。

ostream& operator<<(ostream& out , const Date& d)
{out << d._year << "" << d._month << "" << d._day << "" << endl;return out;
}istream& operator>>(istream& in, Date& d)
{in >> d._year >> d._month >> d._day ;return in;
}

3.完整代码展示

完整Gitee代码链接https://gitee.com/he-minju/c---project/blob/master/2005_2_27/2005_2_27

Date.h

#include<iostream>
using namespace std;class Date
{friend ostream& operator<<(ostream& out,const Date& d);friend istream& operator>>(istream& in,Date& d);
public:Date(int year = 1900, int month = 1, int day = 1);void DatePrintf()const{cout << this->_year << "-" << this->_month << "-" << this->_day << endl;}bool operator<(const Date& d);bool operator>(const Date& d);bool operator<=(const Date& d);bool operator>=(const Date& d);bool operator==(const Date& d);bool operator!=(const Date& d);//ֵDate& operator=(Date& d);//+=Date& operator+=(int day);//-=Date& operator-=(int day);//+Date operator+(int day);//-Date operator-(int day);//ǰ++Date& operator++();//ǰ--Date& operator--();//++Date operator++(int);//--Date operator--(int);private:int _year;int _month;int _day;
};

 Date.cpp

#include"Date.h"Date::Date(int year, int month, int day)
{_year = year;_month = month;_day = day;
}bool Date::operator<(const Date& d)
{if (_year < d._year){return true;}else if (_month < d._month){return true;}else if (_day < d._day){return true;}else{return false;}
}
bool Date::operator>(const Date& d)
{return !(*this < d) && (*this != d);
}
bool Date::operator<=(const Date& d)
{return (*this < d) || (*this == d);
}
bool Date::operator>=(const Date& d)
{return (*this > d) || (*this == d);
}
bool Date::operator==(const Date& d)
{return _year == d._year&& _month == d._month&& _day == d._day;
}
bool Date::operator!=(const Date& d)
{return !(*this == d);
}Date& Date::operator=(Date& d)
{this->_year = d._year;this->_month = d._month;this->_day = d._day;return *this;}Date& Date::operator+=(int day)
{int MonthArr[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };_day += day;while (_day > MonthArr[_month]){MonthArr[2] = 28;if (_year % 4 == 0 && _year % 100 != 0 || _year % 400 == 0){MonthArr[2] = 29;}if (_day > MonthArr[_month]){_day -= MonthArr[_month];_month++;}else if (_month > 12){_year++;}}return *this;
}Date& Date::operator-=(int day)
{int MonthArr[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };_day -= day;while (_day <1){MonthArr[2] = 28;if (_year % 4 == 0 && _year % 100 != 0 || _year % 400 == 0){MonthArr[2] = 29;}if (_day < 1){_month--;_day += MonthArr[_month];			}else if (_month < 1){_year--;}}return *this;
}Date Date:: operator+(int day)
{Date temp = *this;temp += day;return temp;
}Date Date:: operator-(int day)
{Date temp = *this;temp -= day;return temp;
}Date& Date:: operator++()
{return (*this) += 1;
}Date& Date:: operator--()
{return (*this) -= 1;
}Date Date::operator++(int)
{Date temp = *this;*this += 1;return temp;
}Date Date::operator--(int)
{Date temp = *this;*this -= 1;return temp;
}ostream& operator<<(ostream& out , const Date& d)
{out << d._year << "" << d._month << "" << d._day << "" << endl;return out;
}istream& operator>>(istream& in, Date& d)
{in >> d._year >> d._month >> d._day ;return in;
}

http://www.dtcms.com/wzjs/491948.html

相关文章:

  • 郑州门户网站建设哪家好产品网络营销分析
  • 哪个网站做供求信息青岛网络优化厂家
  • 如何再工商局网站做设备抵押怎么宣传网站
  • 网站的优化方法北京全网营销推广公司
  • 网站改版的意义app代理推广合作
  • 重庆网络公司网站建设搜索引擎收录
  • 中国机械加工网平台沈阳百度seo
  • 如何做产品展示网站肥城市区seo关键词排名
  • 湛江有哪些网站建设公司网站seo是什么
  • 政府网站集约化建设实施方案杨谦教授编的营销课程
  • 无锡做网站365caiyi不花钱网站推广
  • 可以做h5游戏的网站百度seo排名优化费用
  • 品牌形象天津优化代理
  • wordpress模板层级长沙seo优化排名
  • 淘宝客网站怎么推广产品推广方案怎么做
  • 无锡优化网站排名十大免费软文推广平台
  • 方正网站制作企业查询
  • 电子商务网站建设与管理考卷百度站长平台链接提交
  • 做展示型网站便宜吗百度网址大全 官网首页
  • 网站排名权重怎么做深圳seo优化电话
  • 互联网保险行业发展报告东莞搜索优化
  • 宝安住房和建设局网站网红推广团队去哪里找
  • 顺义建站好的公司今天疫情最新消息
  • 如何给网站添加音乐百度官方网首页
  • 广东工厂网站建设seo网络营销公司
  • 基于用户体验的网站设计合肥seo排名优化公司
  • 网线制作流程网站seo百度百科
  • 永湖网站建设百度营消 营销推广
  • 深圳建设网站费用免费的黄冈网站有哪些平台
  • 网站建设维护要加班吗百度新闻发布平台