【C++】年月日计算器——操作符重载的应用(含完整代码,简洁)
前言:大家好,这里是YY;此篇博客主要是操作符重载的应用;包含【流插入,流提取】【>,<,>=,<=,】【+,-,+=,-=】【前置++,后置++,前置--,后置--】
PS:最后的模块有完整代码演示;如果对你有帮助,希望能够关注,赞,收藏,谢谢!
目录
三.基本运算符重载【+,+=,-,-=】(日期与天数的运算)
一.流插入,流提取
【流插入的库是在iostream里,流提取的库是在ostream里】
- 可以支持内置类型是因为在库里面实现了
- 可以支持自定义类型,是因为人为进行了函数重载
图示:
此时:cout<<d相当于count.operator(d)
1.为什么流插入<<不能写成成员函数
因此为了使用操作合乎习惯,又要让流插入能够访问成员,只能将流插入重载写在类外(虽然流提取不会出现这种情况,为了统一,一并写在类外)
2.流插入写在类外访问类内成员的方法——友元
但是类内的成员是private(私有的),我们可以通过友元(声明操作符重载函数能进入类内访问的权限)
3.代码展示:
头文件部分:
.c文件部分:
二.基本运算符重载【>,>=,<,<=等】
1.代码展示:
类内声明:
PS:加const,可以让普通变量和const变量都能调用该函数(具体知识点可见YY的C++知识合集博客,关于const的解读)
.c文件实现:
PS:在函数实现过程中可以使用技巧"复用"
(多个函数只需要复用一个定义即可,具体代码)
三.基本运算符重载【+,+=,-,-=】(日期与天数的运算)
1.代码展示:
类内声明:
PS:加const,可以让普通变量和const变量都能调用该函数(具体知识点可见YY的C++知识合集博客,关于const的解读)
PS:const加在后面表示const Date* this ;表明在该成员函数中不能对类的任何成员进行修改,而+=,-=是要实现对类内成员的改变,因此不能加;
.c文件实现:
四.基本运算符重载【前置++,后置++等】
1.机制说明:
1.如何设置返回类型?
- 前置的是【先赋值后使用】:返回的是本身(Date&接收)(引用提高效率)
- 后置的是【先使用后赋值】:返回的是临时变量(Date接收)(不用引用,因为临时变量出作用域即销毁,引用会变成野引用)
2.如何在定义与声明中区分前后置?
- 增加参数int,构成函数重载
2.代码展示:
类内声明:
.c内实现:
五. 减法的重载(日期-日期)
技巧:
- 预设大小:得以计算绝对值
- 预设flag:得以实现最终结果
.c文件实现:
六.完整代码实现
头文件:
.c文件:
- 点赞
- 收藏
- 关注作者
评论(0)