指针c ++:问地址给出值? [重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我最近在stackoverflow上看到的这段代码让我很困惑。返回值必须是IntArray&(所以地址,对吧?)。但是他返回* this(一个值,对吧?)。这似乎不是我的逻辑..这个问题可能是重复但我没有发现它如此非常抱歉。这是代码:

IntArray& IntArray::operator=(const IntArray& other){
     if(this == &other){
         return *this;
     }
     ...
}
c++ pointers
1个回答
2
投票

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

虽然operator&(除非超载)通常会在像&value这样的表达式中产生指针,但在这种情况下,&在任何基本的T&(对于某些类型的T)与该运算符无关,它与该类型相关联。

以类似的方式,T&&是对T的右值引用。

在您的特定实例中,然后:

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

你有this是指向IntArray的指针,通过用operator*取消引用它你得到一个IntArray&值,它与该函数的返回类型完全匹配。

© www.soinside.com 2019 - 2024. All rights reserved.