指针c ++:问地址给出值?

时间:2015-08-11 16:13:41

标签: c++ pointers

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

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

1 个答案:

答案 0 :(得分:2)

您的混淆全部归因于foreignObject,这不是地址,而是参考

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

以类似的方式,T右移参考T&&

在您的具体实例中,然后:

T

IntArray& IntArray::operator=(const IntArray& other){ if(this == &other){ return *this; } ... } 是指向this的指针,并且通过IntArray取消引用,您获得了operator*值,该值与返回类型完美匹配那个功能。