马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Array& Array::operator=(Array& a)
{
if (this->m_space != NULL)
{
delete[] this->m_space;
this->m_len = 0;
}
this->m_len = a.m_len;
this->m_space = new int[m_len];
for (int i = 0; i < m_len; ++i)
{
this->m_space[i] = a.m_space[i];
}
return *this; 问题:等号操作符重载 这里什么时候 返回*this,什么时候 返回 a?
}
本帖最后由 倒戈卸甲 于 2020-4-4 10:48 编辑
首先,返回值类型是由函数名前面的那个Array[]来声明的,这个声明就是返回引用。所以return a和return *this都是在返回引用(引用的语法就是这样,只要有&符号,普通变量和*p都成立为引用)。
于是那么,前者返回的是传入的对象的引用,后者返回的是对象自身的引用。举个例子,你在对象b的方法中,传入参数为对象a的引用,却又返回了对象a的引用,这肯定没有任何意义。但如果返回*this,也就是返回b自身的引用,这就很意义了,因为引用的本质是地址传递,那外部就可以对象b的地址,b的属性和方法都能被接收。
这其实也是c++非常推荐的语法,简洁又可靠,要彻底弄明白这段代码,你可以每天都使用
|