【发布时间】:2018-05-02 14:35:09
【问题描述】:
我觉得这个问题肯定是在某个地方,但要么我找不到正确的搜索词,要么不知何故错过了。
假设我有一个像这样保护其成员的类......
class MyClass {
int m_value;
public:
MyClass(int v) : m_value(v) {}
int value() const { return m_value; }
}
我在整个 SO 中都看到了示例代码,它返回一个对成员变量的 const 引用,就像这样......
class MyClass {
int m_value;
public:
MyClass(int v) : m_value(v) {}
const int& value() const { return m_value; }
// ^^^^^^^^^^
}
我了解一般返回 const 的值,以及返回复合对象的引用的值,但是对于小于体系结构指针大小的对象的值是多少?它似乎既效率低又不安全,没有我能想到的优势。
我想在我的示例中可以对构造函数进行类似的讨论,但这个问题集中在此处的返回值上。
This is the SO answer 促使我提出这个问题。
【问题讨论】:
-
也许,在一个更完整的例子中,用户期望一个引用,因为被引用的值预计会改变,并且用户希望引用总是知道当前值但不能允许更改该值,
-
别那样做,就这样
-
@FrançoisAndrieux 我没有想到这一点,有趣的是,您所描述的潜在功能在相关(ish)问题的this answer 中被描述为“不安全”责任。
-
@Phlucious 这句话几乎适用于任何语言的任何特性;)
-
@Phlucious 如果您不指望它,我可能会成为负担。这仅取决于您要做什么。为工作使用错误的工具总是要付出代价的。