30分钟网站建设教程视频5000人网站开发

web/2025/10/6 22:19:52/文章来源:
30分钟网站建设教程视频,5000人网站开发,无锡百姓网推广,深圳专门网站制作文章目录 一、类的6个默认成员函数二、日期类的实现2.1 运算符重载部分2.2 日期之间的运算2.3 整体代码1.Date.h部分2. Date.cpp部分 三. const成员函数四. 取地址及const取地址操作符重载扩展内容 总结 ヾ(๑╹◡╹)#xff89; 人总要为过去的懒惰而付出代价ヾ(๑╹◡… 文章目录 一、类的6个默认成员函数二、日期类的实现2.1 运算符重载部分2.2 日期之间的运算2.3 整体代码1.Date.h部分2. Date.cpp部分 三. const成员函数四. 取地址及const取地址操作符重载扩展内容 总结 ヾ(๑╹◡╹) 人总要为过去的懒惰而付出代价ヾ(๑╹◡╹) 一、类的6个默认成员函数 如果一个类中什么成员都没有简称为空类。 空类中并不是什么都没有,任何类在什么都不写时编译器会自动生成以下6个默认成员函数。 ​​​​​​​​ 默认成员函数用户没有显式实现编译器会生成的成员函数称为默认成员函数 二、日期类的实现 2.1 运算符重载部分 inline不支持声明与定义分离所以成员函数要成为inline最好直接在类里面定义类里面定义成员函数的默认就是inline。代码较长的部分采用声明与定义分离的方法 1. 运算符重载部分1 此部分在Date.h类里面部分 //运算符重载部分1bool operator(const Date d);bool operator(const Date d);bool operator(const Date d){return !(*this d);}bool operator(const Date d){return !(*this d);}bool operator!(const Date d){return !(*this d);}//思路把小于的情况写出来剩下的就是大于的情况bool operator(const Date d){return *this d || *this d;//this是一个指针指向类的指针//小于和等于都已经实现过了所以就可以复用}//运算符重载部分【-】Date operator(int day) const;Date operator(int day);Date operator-(int day) const;Date operator-(int day);运算符重载部分【比较大小】能复用其他函数的时候尽可能的去复用此部分写一个小于等于那么别的函数就都可以复用内联函数声明定义不能分离(符号表里没有函数的地址所以使用的时候找不到函数定义)所以这部分代码如果想设置成inline函数就直接放到类里面。内联函数是在调用的地方被展开以空间换取时间的方法类里面的函数默认是内联函数 2. 运算符重载部分2 此部分在Date.cpp部分 //运算符重载部分2和部分 bool Date::operator(const Date d)//访问的本质上是this-_year d._year(一个是指针访问一个是类直接访问)……//_year并不是类里面的_year(仅仅是一个声明)而是比较的另一个类 {if (_year d._year _month d._month _day d._day){return true;}else{return false;} } bool Date::operator(const Date d)//要加上Date::(在类外面写) {if (_year d._year|| (_year d._year _month d._month)|| (_year d._year _month d._month _day d._day)){return true;}else{return false;} } //运算符重载 //d12d2;因为此处运算符是d1是不变的所以不能直接对d1进行改动 Date Date::operator(int day) const//这里的返回值不能用Date因为出了函数空间就被回收了 {//复用Date ret(*this);//拷贝构造ret day;return ret;//Date ret(*this);//拷贝构造//ret._day day;//while (ret._day GetMonthDay(ret._year, ret._month))//{// ret._day ret._day - GetMonthDay(ret._year, ret._month);// ret._month;// while (ret._month 13)// {// ret._month 1;// ret._year;// }//}//return ret; }Date Date::operator(int day)//因为出了作用域this还在所以用引用比较好【在能用引用的情况下尽可能去用引用】 {//复用//*this *this day;//return *this;if (day 0){return *this - -day;}_day day;while (_day GetMonthDay(_year, _day)){_day - GetMonthDay(_year, _day);_month;if (_month 13){_month 1;_year;}}return *this; }Date Date::operator-(int day) const {Date ret(*this);ret - day;return ret; } Date Date::operator-(int day) {if (day 0){return *this -day;}_day - day;while (_day 0)//日期是不能有0日的{_month--;while (_month 0){_month 12;_year--;}_day GetMonthDay(_year, _month);}return *this; }运算法重载部分【比较大小】 因为代码较长不适合用inline函数所以使用声明与定义的方法【和的代码更加容易实现】 运算符重载部分【、、-、-】d110注意这里是和-并不是和-,所以d1是不变的不要对d1直接进行改动。【利用拷贝构造】和之间和-和-之间可以相互复用【写整块代码的时候代码之间能相互复用就相互复用【即简单又很大程度上保证了代码的正确性】】【复用更优】加减法注意这里的day要求必须是正数否则减去一个负数相当于加上一个正数加上一个负数相当于减去一个正数相互复用即可【因为-复用-所以-的函数就不用考虑负数问题】 补充知识点1 Date d1(2000 9 17 Date d2 d1;//这里是拷贝构造不是赋值【因为一个已经创建的对象去初始化另一个对象就是拷贝构造】 【赋值是两个已经创建好的对象进行初始化】 补充知识点2: 写赋值重载函数和拷贝构造函数时函数的形参要加const因为既可以防止修改值又可以防止当形参是函数的返回值【具有const属性】会权限扩大导致错误【无法修改的右值】。 2.2 日期之间的运算 前置后置前置–后置–【区分是前置还是后置的函数重载】 C用无参数的代表前置有一个参数的代表后置【参数只要是int类型的就符合要求无论是整形的哪一个数字】 1. 日期之间的运算1 此部分在Date.h类里面部分 Date.h //日期之间的运算Date operator(){*this 1;return *this;}Date operator(int){Date tmp(*this);tmp 1;return tmp;}Date operator--(){*this - 1;return *this;}Date operator--(int){Date tmp(*this);tmp - 1;return tmp;}//日期-日期int operator-(const Date d) const;2. 日期之间的运算2 此部分在Date.cpp里面部分 Date.c //*this和d不确定哪一个日期大 int Date::operator-(const Date d) const {int day 0;int flag 1;Date max *this;Date min d;if (*this d){max d;min *this;flag -1;}while (min ! max){min;day;}day day * flag;return day; }2.3 整体代码 1.Date.h部分 #pragma once#include iostream #include assert.h using std::cin; using std::cout;//在正式的项目中不要全展开 using std::endl;class Date { public://拷贝构造函数部分//判断是否是闰年bool isLeapYear(int year){if (year % 4 0 year % 100 ! 0 year % 400 0){return true;}return false;}//每一月的天数int GetMonthDay(int year, int month);//构造函数(也可以不用写)//可能会有用户输入非法日期Date(int year 1, int month 1, int day 1);//拷贝构造函数(也可以不用写),值拷贝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;}//不需要写析构函数没有资源清理//打印Date,在函数后面加一个const,相当于void print(const Date* const d)const对象和普通对象都可以调用此函数//如果不加const相当于void print(Date* const d),//只要不修改this就可以加上void print() const{cout _year - _month - _day endl;}//运算符重载部分【-】Date operator(int day) const;Date operator(int day);Date operator-(int day) const;Date operator-(int day);//运算符重载部分1【比较大小】bool operator(const Date d) const;bool operator(const Date d) const;bool operator(const Date d) const{return !(*this d);}bool operator(const Date d) const{return !(*this d);}bool operator!(const Date d) const{return !(*this d);}//思路把小于的情况写出来剩下的就是大于的情况bool operator(const Date d) const{return *this d || *this d;//this是一个指针指向类的指针//小于和等于都已经实现过了所以就可以复用}//日期之间的运算Date operator(){*this 1;return *this;}Date operator(int){Date tmp(*this);tmp 1;return tmp;}Date operator--(){*this - 1;return *this;}Date operator--(int){Date tmp(*this);tmp - 1;return tmp;}//日期-日期int operator-(const Date d) const;private:int _year;int _month;int _day; }; 2. Date.cpp部分 #define _CRT_SECURE_NO_WARNINGS 1 #include Date.h//构造函数部分 Date::Date(int year 1, int month 1, int day 1) {if (year 1 (month 1 month 12) (day 1 day GetMonthDay(year, month))){_year year;_month month;_day day;}else{cout 日期非法 endl;} } int Date::GetMonthDay(int year, int month) {assert(year 0 month 1 month 13);static int monthDayArray[13] { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };//因为这部分空间需要频繁开辟所以就用static就可以节约时间if (month 2 isLeapYear(year)){return 29;}else{return monthDayArray[month];} }//运算符重载部分2 bool Date::operator(const Date d) const//访问的本质上是this-_year d._year(一个是指针访问一个是类直接访问)……//_year并不是类里面的_year(仅仅是一个声明)而是比较的另一个类 {if (_year d._year _month d._month _day d._day){return true;}else{return false;} } bool Date::operator(const Date d) const//要加上Date::(在类外面写) {if (_year d._year|| (_year d._year _month d._month)|| (_year d._year _month d._month _day d._day)){return true;}else{return false;} }//运算符重载 //d12d2;因为此处运算符是d1是不变的所以不能直接对d1进行改动 Date Date::operator(int day) const//这里的返回值不能用Date因为出了函数空间就被回收了 {//复用Date ret(*this);//拷贝构造ret day;return ret;//Date ret(*this);//拷贝构造//ret._day day;//while (ret._day GetMonthDay(ret._year, ret._month))//{// ret._day ret._day - GetMonthDay(ret._year, ret._month);// ret._month;// while (ret._month 13)// {// ret._month 1;// ret._year;// }//}//return ret; }Date Date::operator(int day)//因为出了作用域this还在所以用引用比较好【在能用引用的情况下尽可能去用引用】 {//复用//*this *this day;//return *this;if (day 0){return *this - -day;}_day day;while (_day GetMonthDay(_year, _day)){_day - GetMonthDay(_year, _day);_month;if (_month 13){_month 1;_year;}}return *this; }Date Date::operator-(int day) const {Date ret(*this);ret - day;return ret; } Date Date::operator-(int day) {if (day 0){return *this -day;}_day - day;while (_day 0)//日期是不能有0日的{_month--;while (_month 0){_month 12;_year--;}_day GetMonthDay(_year, _month);}return *this; }//*this和d不确定哪一个日期大 int Date::operator-(const Date d) const {int day 0;int flag 1;Date max *this;Date min d;if (*this d){max d;min *this;flag -1;}while (min ! max){min;day;}day day * flag;return day; }三. const成员函数 将const修饰的类成员函数称之为const成员函数const修饰类成员函数实际修饰该成员函数隐含的this指针表明在该成员函数中不能对类的任何成员进行修改。 Date类中的打印函数中 void print() const{cout _year - _month - _day endl;}打印Date,在函数后面加一个const,相当于void print(const Date* const d)const对象和普通对象都可以调用此函数如果不加const相当于void print(Date* const d),只要不修改this就可以加上constd13).print();会报错因为d13是传值返回传值返回的是临时拷贝临时拷贝具有常性。【在print没有加const的情况下】 建议成员函数中不修改成员变量的成员函数都可以加上const。【普通对象和const对象都可以调用】 不加const那么const修饰的对象就没有办法调用成员函数 1. const对象可以调用非const成员函数吗不可以权限放大不可以 2. 非const对象可以调用const成员函数吗可以权限缩小可以 3. const成员函数内可以调用其它的非const成员函数吗不可以权限放大 4. 非const成员函数内可以调用其它的const成员函数吗可以权限缩小 四. 取地址及const取地址操作符重载 这两个默认成员函数一般不用重新定义 编译器默认会生成。 Date* operator(){return this;}//取地址重载const Date* operator() const{return this;}//const取地址重载这两个运算符一般不需要重载使用编译器生成的默认取地址的重载即可只有特殊情况才需要重载比如想让别人获取到指定的内容【不想要输出地址而是别的内容】【此时才需要我们自己写】 扩展内容 流插入运算符和流提取运算符重载 d1.operator(cout);//test函数中写可以运行 coutd1;//不可以运行 void operator(std::ostream out) { out _year “- “ _month” -” _dayendl; } Date.h 类里面 //友元函数friend std::ostream operator(std::ostream out, const Date d);friend std::istream operator(std::istream in, Date d);Date.cpp std::ostream operator(std::ostream out, const Date d) {out d._year - d._month - d._day endl;return out; } std::istream operator(std::istream in, Date d) {in d._year d._month d._day;return in; }内置类型直接支持流插入和流提取【且自动识别类型因为函数重载】全局变量函数不要放在.h里面因为在别的文件展开的时候会出现多个符号表里导致重定义。【只有声明的时候才会链接的时候去找函数】 总结 以上就是今天的所有内容了类的默认成员函数就到此结束了。本文以及【C类和对象】类有哪些默认成员函数呢上】详细的介绍了类的默认成员函数希望给友友们带来帮助

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么用ps做网站首页字公共资源交易中心是属于哪个部门

vite的简介 官方文档 刚起步学习,所以我们只需要按照官方文档的入门流程即可。推荐阅读一下官网的为什么使用vite vite目前需要的node版本是18,可以参考上一篇文章的安装nvm,用来进行多版本的node管理。 vite安装与使用 npm create vitela…

网站建设系wordpress手机插件6

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于swing的小区物业管理系统 系统有1权限&#xff1…

网站上做推广方案济宁亿峰科技做网站一年多少费用

基于LabVIEW软件开发的电路板故障诊断系统,涵盖功能测试、性能测试和通讯测试等多个方面。系统集成了多种硬件设备,包括NI PXI-1033机箱、NI PXI-4071数字万用表、NI PXI-4130电源模块、NI PXI-8512 CAN模块等,通过模块化设计实现了对电路板的…

山东兽药网站建设企业信息管理平台

转自:http://blog.csdn.net/harry211/article/details/8453532 调试程序需要打印一些消息出来,logcat不好用的话就很麻烦了。这个问题折腾了好久,为啥就是不出来呢? 上网找了很多解决办法: 重启eclipse 重启adb 重启…

专业个人网站建设求个免费网站

中介者模式的定义 中介者模式, 当多个类彼此关联, 会增大耦合性, 这时各个模块通过中介者进行交流, 每个模块只负责自己的业务逻辑, 不属于自己的就丢给中介者, 降低耦合 定义: 用一个中介对象封装一系列的对象交互, 中介者使各对象不需要显示的相互作用,从而使其耦合松散,而…

网站收录突然减少企业查询天眼查入口

一.前情提要 1.主要是代码示例&#xff0c;具体内容需自己填充 2.代码后是详解 二.代码实例和解析 代码 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <title>自我介绍页面</title>…

济宁做公司网站青岛代理记账公司排名

在信息爆炸的时代&#xff0c;新闻行业对于内容生产的效率和质量有着极高的要求。AI技术的发展为新闻创作带来了新的变革契机&#xff0c;借助AI智能写作助手&#xff0c;新闻工作者可以快速生成新闻稿件的初稿&#xff0c;大大提高创作效率。本文将基于HarmonyOS NEXT API 12及…

网站在哪里设置域名自己做网站引用别人的电影

H.264 压缩与编解码原理 H.264 压缩与编解码原理H.264 简介视频编码的总体思路H.264 压缩技术帧内预测压缩什么是空间冗余&#xff1f;具体预测方法 帧间预测压缩什么是时间冗余&#xff1f;具体预测方法&#xff1a;运动估计 概念&#xff1a;Group of Pictures&#xff08;GO…

网站风格设计要素松江网站建设多少钱

前言 该篇文章主要总结的是自己平时工作中使用频率比较高的Xml文档操作的一些常用方法和收集网上写的比较好的一些通用Xml文档操作的方法&#xff08;主要包括Xml序列化和反序列化&#xff0c;Xml文件读取&#xff0c;Xml文档节点内容增删改的一些通过方法&#xff09;。当然可…

wordpress怎么建设网站六安网站制作找哪家

目录 mlsd直线检测: ULSD-ISPRS曲线检测 划线标注工具: 可视化标注代码: mlsd直线检测: mlsd_pytorch

网站运营 开发响应式博客网站模板

这是我参与「第四届青训营 」笔记创作活动的的第27天&#xff0c;今天主要记录前端进阶必须掌握内容Mongodb数据库,从搭建环境到运行数据库,然后使用MongodB; 一、文章内容 数据库基础知识关系型数据库和非关系型数据库为什么学习Mongodb数据库环境搭建及运行MongodbMongodb命…

长沙网站公司品牌wordpress 盒模型大学

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;通过DS18B20检测温度&#xff0c;滑动变阻器连接数模转换器模拟电流、电压&#xff0c;通过LCD1602显示&#xff0c;程序里设置温度阈值为40&#xff0c;电流阈值为60&am…

怎么生成网站地图做智能网站

大模型价格战&#xff0c;这匹国产黑马又破纪录了&#xff01;最低的GLM-4 Flash版本&#xff0c;百万token价格已经低至0.1元&#xff0c;可以说是击穿地心。MaaS 2.0大升级&#xff0c;让企业训练私有模型的成本无限降低。 刚刚&#xff0c;智谱AI开放日上&#xff0c;新一代…

关于电商网站建设与管理的书籍seo编辑培训

期盼已久的MIX11终于开幕了&#xff0c;虽然没有去现场&#xff0c;但是心情还是蛮激动的。 MIX11第一天Keynote实况大概1个多小时&#xff0c;其中介绍了下一代微软浏览器&#xff0c;新工具更新以及新产品发布等&#xff0c;下面总结一下MIX11第一天的主要话题。 1. Internet…

聊城网站建设公司电话帝国网站后台管理系统

前言 在上一章节中我们用W5500-EVB-PICO通过dhcp获取ip地址&#xff08;网关&#xff0c;子网掩码&#xff0c;dns服务器&#xff09;等信息&#xff0c;给我们的开发板配置网络信息&#xff0c;成功的接入网络中&#xff0c;那么本章将教大家如何让我们的开发板进行DNS域名解析…

网站按天扣费优化推广如何避免网站被降权

文章目录 函数定义函数案例函数xx 函数定义 函数是将一部分代码进行封装&#xff0c;便于重用、维护&#xff0c;使得代码更加的整洁。 定义函数格式 类型 函数名&#xff08;形参类型 形参名称&#xff0c;…&#xff09;{ 函数体&#xff1b; return 类型值&#xff1b;} 函…

济源建网站怎么网站代备案

一、前言 用例三要素之一就是对预期结果的断言。 何为断言&#xff1f;简单来说就是实际结果和期望结果去对比&#xff0c;符合预期就测试pass&#xff0c;不符合预期那就测试 failed。断言内容就是你要的预期结果。断言包含对接口响应内容做断言、也包含对落DB的数据做断言。…

滑动网站网站伪静态文件

一、什么是文件&#xff1f; 硬盘&#xff08;磁盘&#xff09;上的文件是文件。 在程序设计中&#xff0c;我们从文件功能的角度来分类的话&#xff0c;可以分为程序文件和数据文件。 1.1程序文件 程序文件包含源程序文件&#xff08;后缀为.c&#xff09;&#xff0c;目标文…

深圳公司网站建设大约多少钱网站底部备案号悬挂

目录 1.概念 2.发展现状 3.主要问题 1.概念 网络安全是指保护计算机网络和其中的数据免受未经授权访问、损坏、窃取或破坏的过程和技术。网络安全涉及预防和检测潜在的威胁和漏洞&#xff0c;并采取措施保护网络的机密性、完整性和可用性。 网络安全的概念包括以下几个方面&am…

华为公司网站建设分析评价十大最耐看装修风格

linux命令之ulimit 1.ulimit介绍 linux命令ulimit是用来控制执行程序的资源 2.ulimit用法 ulimit [参数] ulimit参数 参数说明-n单个程序可以打开的最大文件描述符-u单个程序可以使用的最大进程数-d显示程序数据节区的最大值-m显示程序使用memory的最大上限-a显示当前资源设…