理解:C++重载运算符等于(=)时为什么返回的是一个引用(&)(&引用是什么意思)?

首先,我们要理解,引用(&)是什么意思?

&在c语言中可以是取地址的意思。
但在C++中,它有另外一种用法,即引用,这是在C++中特有的,对引用最通俗简单的理解就是取别名!我们做个简单尝试,看以下代码。

#include
using namespace std;
int main
{
	int a=3;
	int &b=a;
	cout<<b;    //输出 3;
	b=1;     //这条语句其实就相当于语句a=1;
	cout<<a<<endl;  //输出1      (验证了上面的猜想)
	
	/*继续尝试/
	cout<<&a<

//取地址时具体是什么地址不重要,重要的是可以看到结论a和b的地址是一样的!嘿嘿。
通过上面的尝试,我们得出了一个重要结论,引用(&)本质上就是取别名,对于 int& b=a 而言,b是对a的一个引用, 只要把对b所进行的所有操作想象成对a进行的所有操作就就行了。

其次,我们来理解在C++中重载运算符+时为什么返回的是引用(&);

class A{
public:
	int a;
	A& operator+(A c) {
		this->a= c.a;
		return *this;
	}
}

上面是类A。
1.在讲解引用之前,容许我讲解一下this的意思。
①对于代码中的类A,如果创建出一个对象 A p1, 那么在A内部,this指针是指向p1这个对象的,比如说this->a,其实指的就是p1里面的成员数据a,所以记住this就是指向目前所在对象的一个指针。(为什么要引出this这个东西呢,这就是第二点要讲的了)
②我们看到上面的代码中的重载运算符+的函数中返回了this,由①知this是一个指针指向p1,是解引用的意思,所以this就指的是p1,比如说*this.a指的也是p1中的数据成员a。

你可能感兴趣的:(重载运算符等于号(=),C++,this,c++,指针,引用传递)