具有返回值的变异体(集合函数)

Mutators (set-functions) with return value?

本文关键字:集合 函数 异体 变异 返回值      更新时间:2023-10-16

我学的是编程,我刚开始学习set和get函数。

我的问题是,如果使用具有返回值的集合函数是常见的做法?就像set函数执行验证一样,如果传入的值通过了验证,我希望它返回true。

在谷歌上搜索了一下,看了看我的课程材料,什么也没找到,到处都是void set-functions !!:)

Thx

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

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);

getter/setter的核心动机是值验证/完整性检查值,因此返回bool值是一种常见的方法,可以知道操作是否成功发生:

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

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

,

  • 它不能传递任何额外的信息给调用者(为什么它会中断?)
  • 与异常相比,
  • 更容易被忽略

取决于setter在做什么

只给类成员赋值的set函数是void

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

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