【C++】类的默认成员函数(下)
🔥博客主页: 小羊失眠啦.
🎥系列专栏:《C语言》 《数据结构》 《C++》 《Linux》 《Cpolar》
❤️感谢大家点赞👍收藏⭐评论✍️
文章目录
- 一、运算符重载
- 1.1 引例
- 1.2 概念及运用:
- 1.3 牛刀小试:
- 1.4 ==重载
- 1.5 运算符重载的特性
- 1.6 其他运算重载符的实现
- 1.6.1 > = 重载
- 二、简单的测试
- 三、默认成员函数——赋值运算符重载
- 四、默认成员函数——取地址操作符重载
- 五、const成员
- 六、日期类的实现
- 6.1 Date.h
- 6.2 Date.cpp
本章主要内容为认识与学习C++非常重要的概念——运算符重载。通过日期类的实现,逐步学习各个运算符重载的实现方法即含义。6个默认成员函数还剩余3个——赋值运算符重载与2个取地址重载,我们本章就会解决它们~
一、运算符重载
1.1 引例
假设现在有一个日期类Date,以及两个Date类对象d1、d2。在实际应用中,我们难免会对两个对象进行比较大小、加减乘除、流插入、流提取、赋值等一系列操作。在C语言阶段,我们的做法一般是实现各操作对应的函数。例如:
class Date { //... } int Add(Date d1,Date d2); //相加 int Sub(Date d1,Date d2); //相减 int Compare(Date d1,Date d2); //比较 //...
虽然这种做法可以满足需求,但是有一个缺点:代码的可读性较差。尽管使用者好像能通过函数名猜出函数的大致功能,但是使用者并不知道函数的具体实现难免会造成错误的使用。
有没有什么方法可以像这样让人一眼就能看懂呢?例如:
d1+d2; d1-d2; d1==d2 //...
为了增强代码的可读性,C++中引入了运算符重载的概念。
1.2 概念及运用:
C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表。
运算符重载实际上就如同函数重载,使操作符拥有新的功能。
运算符重载结构:返回值类型 operator操作符(参数列表)
例如:
bool operator==(Date d1,Date d2);
1.3 牛刀小试:
定义一个Date类:
namespace Aron { class Date { public: //构造函数 Date(int year = 0, int month = 0, int day = 0) { //判断日期是否合法 //GetMonthDay()获取这个月的天数 if (month > 0 && month 0 && day _year = year; _month = month; _day = day; } else cout return (d1._year == d2._year) && (d1._month == d2._month) && (d1._day == d2._day); } int main() { Date d1(2023, 4, 1); Date d1(2023, 3, 4); //注意优先级问题 cout class Date { public: //构造函数 Date(int year = 0, int month = 0, int day = 0) { //判断日期是否合法 //GetMonthDay()获取这个月的天数 if (month 0 && month
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...