具有返回值的变异体(集合函数)
Mutators (set-functions) with return value?
我学的是编程,我刚开始学习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做的不止这些,我可以设想返回一个布尔值。
相关文章:
- 如何将函数集合传递给客户端类,以便将它们当作客户端类本身的成员使用
- 实现一个在集合上迭代的模板函数
- 尝试使用集合函数时出现分段错误
- 重载运算符的范围是什么?它是否会影响作为类成员的集合的插入函数?
- 基于函数而不是集合的二分搜索或迭代器?
- 成员函数不能为集合迭代器和const_iterator的输入重载(但可以为其他 STL 迭代器重载)
- find() 函数对集合有效吗?
- 我们如何使用下面的集合构造函数构造设置元素
- 有没有一种单行方法来调用集合上的 lambda 函数
- 将all_of与 lambda 函数集合一起使用
- 异质集合调用派生类函数 c++
- 在集合上运行的函数模板,该集合具有默认的"transform"函数,该函数不执行任何操作
- 递归函数,用于使用位掩码 c++ 显示集合的所有子集
- C++集合方法:函数'setCost'不可行:'this'参数的类型'const value_type'
- C++:每当将元素添加到集合中时,如何调用函数
- 使用提升的集合中的成员函数代理
- 在声明'const'函数中循环访问具有'const_iterator'的集合会导致错误
- 避免集合的标头节点需要空构造函数
- 有没有可能拥有C++模板函数,它接受任何类型T的集合
- 具有返回值的变异体(集合函数)