为什么这个方法被调用而不是另一个?

时间:2015-06-10 06:12:42

标签: c++ methods reference const

我有这个特殊的代码示例:

 struct ComplexNumber {
      float  _Re, _Im;
     public:
      float  Re() const { return _Re; }
      float& Re()       { return _Re; }

      float  Im() const { return _Im; }
      float& Im()       { return _Im; }
    };

我想知道为什么,当我表演时

ComplexNumber Num1;
cout << Num1.Re() << endl;

正在调用方法float& Re() { return _Re; },而不是

float Re() const { return _Re; }似乎已准备好通过使用const保护数据来执行cout。

1 个答案:

答案 0 :(得分:3)

正在调用最佳匹配函数,因此如果同时具有const和非const版本,则将在非const对象上调用非const版本。

如果你有一个const对象(或指针或引用)

const ComplexNumber Num1;
cout << Num1.Re() << endl;

然后会调用float Re() const { return _Re; }