c++ - 首选哪个,return const double& OR return double

标签 c++ reference return-value

给定以下场景,以下哪一项是首选。 m_state 是一个成员评价者,而不是局部变量。

class C
{
private:
    double m_state;
public:
    double state() const { return m_state; } // returns double
    double& state() { return m_state; }
}

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

class C
{
private:
    double m_state;
public:
    const double& state() const { return m_state; } // returns const double&
    double& state() { return m_state; }
}

最佳答案

我不会这样做:

double& state() { return m_state; }

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

const double & state() const { return m_state; }

再一次,当你谈到保存 64 位变量的拷贝(即微优化)以及后一个版本可以重铸为你想要的任何东西时,我会直接复制它:

double state() const { return m_state; }

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

关于c++ - 首选哪个,return const double& OR return double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1684978/

相关文章:

c++ - 错误 : invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’

reference - 为什么我可以返回对局部文字的引用而不是变量?

ruby - 这个代码片段有更好的做法吗?

c++ - 重载的返回类型 >>

c++ - 随机生成器帮助 C++

c++ - map 通过引用

javascript - 有什么方法可以判断 javascript 函数是否已返回?

python - 列表中 10 的倍数

c++ - 当我不需要使用一个函数的所有参数时怎么办?

c++ - 查找表究竟是如何工作的以及如何实现它们?