【C++】类的默认成员函数(下)

04-09 阅读 0评论

【C++】类的默认成员函数(下)

🔥博客主页: 小羊失眠啦.

🎥系列专栏:《C语言》 《数据结构》 《C++》 《Linux》 《Cpolar》

❤️感谢大家点赞👍收藏⭐评论✍️


【C++】类的默认成员函数(下)

文章目录

  • 一、运算符重载
    • 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 

免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]