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

Why is this method called instead of the other?

本文关键字:另一个 方法 调用 为什么      更新时间:2023-10-16

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

 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。

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

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

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

则调用float Re() const { return _Re; }