c++:请求地址给出值

Pointers c++ : ask address gives value?

本文关键字:地址 请求 c++      更新时间:2023-10-16

我对最近在stackoverflow上看到的这段代码感到困惑。返回值必须是inarray &(所以是地址,对吧?)然后他返回*this(一个值,对吧?)这对我来说似乎不合逻辑…这个问题可能是重复的,但我没有发现,所以非常抱歉,如果它是。下面是代码:

IntArray& IntArray::operator=(const IntArray& other){
     if(this == &other){
         return *this;
     }
     ...
}

你的困惑都是由于IntArray&,这不是一个地址,它是一个参考

虽然operator&(除非重载)通常在像&value这样的表达式中产生一个指针,但在这种情况下,&在任何生成的T&(对于某些类型T)中都与该操作符无关,它与类型相关。

同理,T&&是对T右值引用

在您的特定实例中,则:

IntArray& IntArray::operator=(const IntArray& other){
     if(this == &other){
         return *this;
     }
     ...
}

您知道this是指向IntArray的指针,并且通过与operator*解引用它,您将获得IntArray&值,该值与该函数的返回类型完全匹配。