具有返回值的Mutators(set-functions)?

时间:2014-03-13 09:45:54

标签: c++ c++11

我正在学习编程,我刚开始学习设置和获取函数。

我的问题是,通常的做法是使用带有返回值的set-functions吗? 就像set-function执行验证一样,如果传入的值通过验证,我希望它返回true。

用Google搜索并通过我的课程材料看了一眼,发现什么都没有,到处都是无效的功能! :)

THX

3 个答案:

答案 0 :(得分:5)

在某些情况下,您可能希望从setter方法返回*this的引用以实现fluent interface。一个简单的例子:

class C {
  int x,y;
public:
  C& setX(int value) { x = value; return *this; }
  C& setY(int value) { y = value; return *this; }
};

然后可以通过以下方式使用此类:

C c;
c.setX(1).setY(2);

答案 1 :(得分:2)

getter / setter的核心动机是值验证/健全性检查值,因此返回bool是一种常见的方法,可以确定操作是否成功:

bool Class::setSomething(int a)
{
  if (is_ok(a))
  {
    // set...
    return true;
  }

  return false;
}

这是

  • 快速/易于实施
  • 占用的空间小于异常处理(尽管现在可以忽略不计)

  • 它无法将任何额外信息传回给调用者(为什么它会中断?)
  • 与例外相比,
  • 更容易被忽略

答案 2 :(得分:0)

取决于setter正在做什么。

我只为类成员分配值的set函数为void

void Class::setParameter(Parameter param)
{
    m_parameter = param;
}

如果setter做的不止于此,我可以设想返回一个布尔值。