哪一个是首选,返回const double和OR返回double

lyx*_*era 5 c++ reference return-value

鉴于以下情况,优选以下哪一种情况.m_state是一个成员 rater而不是局部变量.

class C
{
private:
    double m_state;
public:
    double state() const { return m_state; } // returns double
    double& state() { return m_state; }
}
Run Code Online (Sandbox Code Playgroud)

===========================================

class C
{
private:
    double m_state;
public:
    const double& state() const { return m_state; } // returns const double&
    double& state() { return m_state; }
}
Run Code Online (Sandbox Code Playgroud)

cle*_*tus 6

我不会这样做:

double& state() { return m_state; }
Run Code Online (Sandbox Code Playgroud)

m_state如果你这样做,你也可以公开.可能最有意义的是:

const double & state() const { return m_state; }
Run Code Online (Sandbox Code Playgroud)

再说一次,当你谈到保存64位变量的副本(即微优化)以及后一版本可以重铸为你想要的任何东西的事实时,我只想复制它:

double state() const { return m_state; }
Run Code Online (Sandbox Code Playgroud)

(并不是说有任何真正的安全性)