当函数在C ++中使用参数时,为什么要使用解引用

时间:2018-06-07 06:54:09

标签: c++

handleFrameToggleChange(index, event) {
    var frame_setting = this.state.frame;
    frame_setting[index].enabled = frame_setting[index].enabled == "0" ? "1" : "0";
    frame_setting[index].show_text = frame_setting[index].show_text == "0" ? "1" : "0";

    this.setState({
      frame: frame_setting
    });
  }

我正在查看此C ++示例,但我不明白为什么#include <iostream> using namespace std; class Dummy { public: bool isitme (Dummy& param); }; bool Dummy::isitme (Dummy& param) { if (&param == this) return true; else return false; } int main () { Dummy a; Dummy* b = &a; if ( b->isitme(a) ) cout << "yes, &a is b\n"; return 0; } 使用解除引用标记'&amp;'。参数是Dummy对象本身对,为什么它是对象的地址?

2 个答案:

答案 0 :(得分:3)

&符号不是“解除引用标志”。它在这里以两种不同的方式使用,我将在下面解释。

“取消引用标志”是星号(*)。

  1. bool Dummy::isitme (Dummy& param) 在此处,Dummy& param表示param是对Dummy对象的引用。

  2. if (&param == this) return true; 在此,&param表示param的地址。

答案 1 :(得分:0)

isitme通过引用获取其参数,即它获取对象的地址而不是复制它。关键是不要复制对象并处理原始对象。