我知道如何编写代码,但无法解释代码的含义:
ArrayList& ArrayList::operator =(const ArrayList& other) {
delete[] m_elements;
copy(other);
return *this;
}
第一个问题
我知道ArrayList&
的意思是“通过引用传递它”。但这是我第一次将ArrayList&
视为一种方法的返回类型。有什么区别:
ArrayList ArrayList :: operator() {}
和
ArrayList& ArrayList :: operator(){}
第二个问题
什么是return *this
意味着什么?为什么要返回指针?不应该是return this;
?
**已编辑
第三个问题
下面的代码是否意味着“此方法返回一些奇怪的内存地址(类似于0x90183930)”参考“?
ArrayList*& ArrayList ::operator(){}
标准赋值运算符语义作为赋值的结果返回指定的值。
所以它应该返回一个ArrayList或一个const ArrayList&。后者是大型对象的首选,因为它只传递一个地址,而不是相关值的完整副本。
顺便说一句,它返回* this,因为在完成赋值后,*这是分配的值。
在C ++中后跟一个&符号的数据类型只是对象的引用,而不是整个对象(这将是一个副本)。因此ArrayList&
是对ArrayList
类型的对象的引用。
第二个问题是由此产生的。在类ArrayList
的上下文中,this
是指向当前实例的指针,因此类型为ArrayList*
。 *
之前的this
取消引用此指针,导致指向对象,该对象有效通过引用传递,因此符合指定的ArrayList&
返回类型。
如果它返回this
而不是*this
,则返回类型必须是ArrayList*
。