【发布时间】:2013-04-26 20:11:19
【问题描述】:
我想知道 C++ 中的良好实践,我面临着为类成员制作 getter/setter 的问题。
那么,为什么不简单地通过引用返回成员,这样我就可以修改或访问它的值来读取它?具体来说,这是我的代码:
class Chest : public GameObject
{
public:
Chest();
~Chest();
static int& num_chests();
private:
static int num_chests_;
};
这是一种不好的做法吗?我应该改用这些吗?
class Chest : public GameObject
{
public:
Chest();
~Chest();
static int num_chests();
static void set_num_chests(int num_chests);
private:
static int num_chests_;
};
【问题讨论】:
-
如果 getter 没有做任何事情,而 setter 没有做任何事情,那么两者都是错误的。公开
num_chests_。否则,需要第二个。通过引用返回成员的情况非常罕见。 -
或者您可以使用选项 3 并将
num_chests设为public数据成员,尤其是在您的 setter 不需要进行任何验证测试的情况下。 -
我不认为这是特别糟糕的做法。使用/返回引用是 C++ 中的一个常见习惯用法。
-
您当前是否有要为 num_chests_ 强制执行的约束或前提条件?如果是这样,请使用 setter 和 getter;否则将其设为公共成员。
-
@neodelphi - 编译器不强制执行良好的设计或样式。这给我们许多人带来了悲伤和就业机会。
标签: c++