c++

状课网-少儿编程网课专业平台

c++ C++编程进阶级—this指针和+运算符的重载

发布时间:2021-11-23 16:07:22 浏览 0
各位小伙伴大家好:

上期我们了解了对象数组,就是由对象组成的数组。

本期为大家分享到的是主要内容是关于this指针,还有一个就是关于+运算符的重载和+=运算重载很相似。

首先还是来看看头文件的代码:

C++编程进阶级—this指针和+运算符的重载

C++编程进阶级—this指针和+运算符的重载

在头文件中主要是重载了<<、>>、+运算符,为什么要重载呢?   主要是适应我们程序的要求,如果不重载的话<<需要提供第一个字符串,而我们要实现的功能是提供一个对象输出它的成员数据。所以需要重载运算符来实现我们目的,至于实现过程大家可以参考上面的代码。 下面来看看主程序代码:

C++编程进阶级—this指针和+运算符的重载

  主程序很简单实例化两个对象,并调用重载之后的+运算符实现两个对象的相加。   运行结果如下:

C++编程进阶级—this指针和+运算符的重载

运行结果输出了两个对象的相加之后的对象的成员数据(一个字符串)。

笔记:

我们来重点了解一下作为成员函数重载的+运算符,在最后返回了一个*this。 这里要分为两部分来理解,前面的*(间接访问运算符)和后面this(一个指针),连起来就是访问this指针所指向的内存空间,而this所指向的正好就是对象的存储位置。  

另外this指针只在成员函数中才有意义,并在对象实例化确定对象存储位置时即被确定。   所有的成员函数都默认传入了一个this指针作为参数,指向操作的对象。  

比如class A表示一个A类。a表示A的一个实例对象,它有一个成员函数fun()。 那么当我们在使用a.fun()调用成员函数的时候,编译器其实隐含传递了一个参数,相当于a.fun(&a)。&a就是a对象的地址也就是this所指向的地址。   所以上面所返回的*this其实就是str2,而str2+str1可以理解为str2调用成员函数+(str1),只是成员函数返回的就是对象str2本身(新的str2)。  

本期就为大家分享到这里,下期再会。

 

  文章来源:创客编程小屋

本文链接:https://www.ascratch.com/news/17501.html

上一篇:C++编程进阶级—对象数组的创建 下一篇:返回列表
相关推荐 更多