gpt4 book ai didi

c++ - 试图理解 C++ 深拷贝

转载 作者:行者123 更新时间:2023-11-28 03:01:10 25 4
gpt4 key购买 nike

我知道怎么写代码,但是不能在这里解释代码的含义:

 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(){}

最佳答案

在 C++ 中,数据类型后跟一个 & 符号只是对对象的引用,而不是作为一个整体的对象(这将是一个拷贝)。因此 ArrayList&是对 ArrayList 类型对象的引用.

第二个问题由此而来。在类的上下文中 ArrayList , this是指向当前实例的指针,因此类型为 ArrayList* . *之前this取消引用此指针,导致指向对象,该对象可通过引用有效传递,因此符合 ArrayList& 的指定返回类型.

如果返回this而不是 *this返回类型必须是 ArrayList* .

关于c++ - 试图理解 C++ 深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20821189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com