返回对私人与 public 成员的引用

returning reference to private vs public member

我想知道提供 public 访问方法返回引用而不是使成员成为 public 的原因是什么。 QPoint 有方法 int& rxint& ry 让我直接操作坐标。

我想实现看起来与此类似:

public:
    int& rx(){return x;}
private:
    int x;

到目前为止我唯一的想法如下:通过保持成员私有并 "only" 提供引用,class 仍然可以更改为使用不同的数据类型作为其坐标和同时仍然 "somehow" 返回对 int 的引用。然而,这个 "somehow" 总是需要一个 int 成员。一旦引用泄露,成员实际上就不能再改变了。所以这不能成为原因。

related question 中,接受的答案建议让成员 public 而不是返回引用。

返回引用而不是使成员成为 public(在一般情况下)有什么好处吗?或者这只是 Qt 特定的(QPoint 特定的?)设计?

编辑:QPoint in Qt4

一般来说,通过引用返回成员会破坏封装,这与拥有 public 成员一样多,而且两者都不被鼓励。

我想当 class 足够简单时(普通的旧数据——预计界面和数据都不会改变),可以使它的所有成员 public。返回非 const 引用具有相同的效果。所有封装都被破坏了。

关于你的问题,没有任何好处。

除了我的回答,还有类似的回答here