我有这个特殊的代码示例:
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。
答案 0 :(得分:3)
正在调用最佳匹配函数,因此如果同时具有const和非const版本,则将在非const对象上调用非const版本。
如果你有一个const对象(或指针或引用)
const ComplexNumber Num1;
cout << Num1.Re() << endl;
然后会调用float Re() const { return _Re; }
。