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

网站制作分工山东疫情最新情况

网站制作分工,山东疫情最新情况,域名购买之后怎么做网站,星沙网站制作C【类和对象】 1.运算符重载2.赋值运算符重载3.日期类的实现 1.运算符重载 (1).C规定类类型运算符使用时,必须转换成调用运算符重载。 (2).运算符重载是具有特殊名字的函数,名字等于operator加需要使用的运算符,具有返回类型和参数列表及函数…

C++【类和对象】

  • 1.运算符重载
  • 2.赋值运算符重载
  • 3.日期类的实现

1.运算符重载

(1).C++规定类类型运算符使用时,必须转换成调用运算符重载。
(2).运算符重载是具有特殊名字的函数,名字等于operator加需要使用的运算符,具有返回类型和参数列表及函数体。
(3).重载运算符函数的参数个数和该运算符作用的运算对象的个数保持一致,一元运算符有一个参数,二元运算符有两个参数,二元运算符左边的传给第一个参数,右边的传给第二个参数。
(4).如果一个重载运算符函数是成员函数,那么它的第一个函数参数是this指针,所以显示出来就少一个参数。
(5).运算符重载以后,其优先级和结合性与对应的内置类型运算符保持⼀致。
(6).不能通过连接语法中没有的符号来创建新的操作符:比如operator@
(7).
在这里插入图片描述这五个运算符不能重载。
(8).C++为了区分前置++和后置++运算符重载函数,规定前置为operator++(),后置++为operator++(int)

#include<iostream>
using namespace std;
class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}bool operator == (const Date& d){return _year == d._year&& _month == d._month&& _day == d._day;}//d1-d2
int	operator-(const Date& d);
//日期-天数
Date operator-(int day);
private:int _year;int _month;int _day;};
int main()
{Date d1(2024, 3, 20);Date d2(2025, 3, 18);if (d1 == d2){cout << "相等" << endl;}elsecout << "不相等" << endl;return 0;
}

2.赋值运算符重载

赋值运算符重载是一个默认成员函数(不能重载到全局),用于完成两个已经存在的对象直接的拷贝赋值。
赋值运算符重载的特点:
(1).赋值运算符重载是一个函数重载,规定重载必须为成员函数,赋值运算重载的参数建议写成const 当前类类型引用,否则会传值传参会有拷贝。
(2).有返回值,且建议写成当前类类型引⽤,引⽤返回可以提高效率,有返回值目的是为了支持连续赋值场景。
(3).没有显式实现时,编译器会自动生成⼀个默认赋值运算符重载,默认赋值运算符重载行为跟默认拷贝构造函数类似,对内置类型成员变量会完成值拷贝/浅拷贝(⼀个字节⼀个字节的拷贝),对自定义类型成员变量会调用他的赋值重载函数。
(4).如果一个类显示实现析构并释放了资源,就需要我们显示实现赋值运算符重载,否则就不需要。

#include<iostream>
using namespace std;
class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}Date(const Date& d){_year = d._year;_month = d._month;_day = d._day;}Date& operator=(const Date& d){if (this != &d){_year = d._year;_month =d._month;_day = d._day;}return*this;}void Print(){cout << _year << "-" << _month << "-" << _day << endl;}
private:int _year;int _month;int _day;
};
int main()
{Date d1(2004,8,18);Date d2(d1);d1.Print();d2.Print();return 0;
}

3.日期类的实现

//Date.h
#include<iostream>
using namespace std;
class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}int GetMonthDay(int year,int month){int monthDayArray[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;}elsereturn monthDayArray[month];}Date& operator+=(int day);Date operator+(int day);Date& operator-=(int day);Date operator-(int day);// ++d1 ->d1.operator++()Date& operator++();// d1++ ->d1.operator++(1);Date operator++(int);Date& operator--();Date operator--(int);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);int operator-(const Date& d);void Print();
private:int _year;int _month;int _day;
};
//Date.cpp
#include"Date.h";
Date& Date::operator+=(int day)
{_day += day;while (_day > GetMonthDay(_year, _month)){_day -= GetMonthDay(_year, _month);++_month;if (_month == 13){_year++;_month = 1;}}return *this;
}// d1 + 100
Date Date::operator+(int day)
{Date tmp(*this);tmp += day;return tmp;
}void Date::Print()
{cout << _year << "-" << _month << "-" << _day << endl;
}// ++d1
Date& Date::operator++()
{*this += 1;return *this;
}// d1++
Date Date::operator++(int)
{Date tmp(*this);*this += 1;return tmp;
}// d1 < d2
bool Date::operator<(const 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==(const Date& d)
{return _year == d._year&& _month == d._month&& _day == d._day;
}// d1 <= d2
bool Date::operator<=(const Date& d)
{return *this < d || *this == d;
}bool Date::operator>(const Date& d)
{return !(*this <= d);
}bool Date::operator>=(const Date& d)
{return !(*this < d);
}
//test.cpp
#include"Date.h"void TestDate1()
{Date d1(2025, 3, 9);d1.Print();Date d2 = d1 + 100;d2.Print();d1.Print();Date d3 = d1 += 100;d1.Print();d3.Print();
}void TestDate2()
{Date d1(2025, 3, 9);Date ret1 = ++d1;//Date ret1 = d1.operator++();d1.Print();ret1.Print();Date d2(2025, 3, 9);Date ret2 = d2++;//Date ret2 = d2.operator++(10000);d2.Print();ret2.Print();
}int main()
{TestDate2();return 0;
}

在这里插入图片描述

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

相关文章:

  • 理论网站建设实施方案百度一下你就知道百度一下
  • 有哪些网站或者公司招募做视频的最新战争新闻事件今天
  • 群晖安装wordpress汉化系统优化是什么意思
  • 网站留言板html代码搜索引擎在线
  • 找人做淘宝网站湖南长沙最新情况
  • 浏览器如何做购物网站百度一下首页网址
  • 做视频搬运工的网站网站建设免费
  • 网站架构企业收费标准哈尔滨企业网站seo
  • 旅游网站建设与规划艺术培训学校招生方案
  • 郑州网站建设排行榜百度关键词排名推广话术
  • 环保网站建设方案免费制作个人网站
  • 我做的网站服务器别人没法左键点击下载呢目前病毒的最新情况
  • 真做av网站北京seo推广
  • 优化网站要怎么做手机网站建设
  • 公司电脑为什么有的网站打不开顾问式营销
  • 做网站的工作量搜索引擎网站提交入口
  • 医院双语网站建设的意义网站的优化与推广分析
  • 做淘宝类网站的步骤优化怎么做
  • 哈尔滨做企业网站信息流推广的竞价机制是
  • 给个网站好人有好报2021建立网站的基本流程
  • 西昌新站seo百度购物平台客服电话
  • 产品详情页面设计福州seo推广外包
  • 长春自助建站模板百度发布信息的免费平台
  • 芜湖北京网站建设网络营销活动策划
  • 做h网站风险代运营电商公司
  • 网站建设制中国软文网官网
  • 微网站开发程序百度百家号官网登录
  • 企业移动网站建设宁波seo托管公司
  • 承接博彩网站建设seo整站优化外包
  • 表白网站制作器搜索引擎是网站吗