【发布时间】:2017-12-15 16:44:43
【问题描述】:
在 C++ 编程中,我经常希望给类的用户对属性的只读访问权限,以及类本身的读写访问权限。我讨厌XxxGet() 方法,所以我经常将public const & 用于私有属性,如下所示:
class counter {
private:
int _count;
public:
const int & count;
counter : _count( 0 ), count( _count ){}
void inc( void ){ _counter++; }
};
这个技巧有通用名称吗?
【问题讨论】:
-
访问器(getter/setter)不仅是限制对某些成员变量的访问的手段,它们还隐藏了实现。您的“技巧”泄漏了实现,这意味着您将永远无法更改
count在您的班级中的表示方式。如果有一天你决定count会更好地即时计算,或者访问计数应该同步以适应多线程,该怎么办?您必须修改counter的所有用户。您可能应该坚持使用广为接受的习语,并使用 getter。 -
@Seb:可能不会,这带来的痛苦多于荣耀(即,它很容易在应用程序中产生错误,而与普通访问器相比几乎没有任何价值)
-
@Wouter:我想知道你为什么“讨厌”
XxxGet()方法?我的意思是,我也讨厌它们,但我会在这里使用它们,因为这正是你所需要的。 -
@JD:不知道,我想这对我来说感觉不对。我不喜欢 () 用于(至少在概念上)除了产生值之外什么都不做的东西。就像每次我需要那个常量时都要写两次 pi()。
-
刚刚我想到了一个可以认为是同一种模式的名字。虽然通常不用于成员变量。
标签: c++