【C++】中类的6个默认成员函数 取地址及const成员函数 && 学习运算符重载 && 【实现一个日期类】
文章目录
- 一、【C++】赋值运算符重载
- 1.1 运算符重载【引入】
- 1.2 运算符重载
- 1.3 赋值运算符重载
- 1.4 赋值
- 二、日期类的实现
- 2.1 判断小于
- 2.2 判断等于
- 2.3 判断小于等于
- 2.4 判断大于
- 2.5 判断大于等于
- 2.6 判断不等于
- 2.7 日期加等天数
- 2.8 获取月份天数
- 2.9 日期加天数
- 2.9.1 日期减等天数
- 2.9.2 日期减天数
- 三、前置++ && 后置++
- 3.1 日期减日期【返回天数】
- 3.2 流插入
- 3.3 流提取
- 3.4 检查输入日期是否合法
- 四、日期类的实现【源码】
- 五、const修饰
- 5.1 const成员函数
- 5.2 小结一下:
- 5.3 默认成员函数【取地址及const取地址操作符重载】
一、【C++】赋值运算符重载
1.1 运算符重载【引入】
- C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。
- 函数名字为:关键字operator后面接需要重载的运算符符号。
- 函数原型:返回值类型 operator操作符(参数列表)
注意:
-
不能通过连接其他符号来创建新的操作符:比如operator@
-
重载操作符必须有一个类类型参数【不能去重载运算符改变内置类型的行为】
-
用于内置类型的运算符,其含义不能改变,例如:内置的整型+,不 能改变其含义
-
作为类成员函数重载时,其形参看起来比操作数数目少1个,因为成员函数的第一个参数为隐藏的this
-
.* :: sizeof ?: . 注意以上5个运算符不能重载。这里的是.*,不是*,这写经常在笔试选择题中出现。
- 我们写了一个日期类,有没有可能要比较比较呢?
class Date { public: Date(int year = 1900, int month = 1, int day = 1) { _year = year; _month = month; _day = day; } //private: // 一会有解决方法 int _year; int _month; int _day; };- 我们写了一个比较相等的函数,如果是传值的话没有必要,我们形参直接写成&,而且也不需要修改,所以再加上const
bool DateEquel(const Date& x, Date& y) { return x._year == y._year && x._month == y._month && x._day == y._day; }- 下面再实现一个函数【比较小于】
bool DateLess(const Date& x, Date& y) { if (x._year- 上面有一些不好的地方,取名字的问题,取得很乱就不知道这个函数是干什么的
下面我就要用一个新的符号
1.2 运算符重载
- 这里的运算符重载 和函数重载的重载不是一个意思
- 对运算符的行为重新定义
operator+运算符做函数名
- 刚刚上面写的代码就可以写成下面这样
bool operator==(const Date& x, Date& y) { return x._year == y._year && x._month == y._month && x._day == y._day; } bool operator if (x._year
- 刚刚上面写的代码就可以写成下面这样
- 上面有一些不好的地方,取名字的问题,取得很乱就不知道这个函数是干什么的
- 下面再实现一个函数【比较小于】
- 我们写了一个比较相等的函数,如果是传值的话没有必要,我们形参直接写成&,而且也不需要修改,所以再加上const
- 我们写了一个日期类,有没有可能要比较比较呢?
-
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
