返回私人与公共成员的引用

时间:2015-06-08 19:30:51

标签: c++ qt reference private public

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

我猜这个实现看起来与此类似:

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

我到目前为止唯一的想法是:通过保持成员私有和“仅”提供引用,类仍然可以更改为其坐标使用不同的数据类型,同时仍“以某种方式”返回引用到一个int。但是,这种“某种程度上”总是需要一个int成员。一旦参考泄露,该成员实际上不能再改变。所以这不是原因。

related question中,接受的答案建议公开而不是返回引用。

返回引用而不是将成员公开(在一般情况下)是否有任何好处?或者这只是Qt特定的(特定于QPoint?)设计?

编辑:QPoint in Qt4

1 个答案:

答案 0 :(得分:3)

一般而言,通过引用返回成员会破坏与拥有公共成员一样多的封装,并且都不鼓励。

我认为当一个类足够简单时(普通的旧数据 - 预计接口和数据都不会改变),可以使所有成员公开。返回非const引用具有相同的效果。所有封装都被打破了。

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

除了我的回答,还给出了类似的答案here