如何使类的函数默认
How to make a class's function default
示例代码:
class Sum{
public:
void value(int val){_v = val;}
int add(int val){return _v + val;}
private:
int _v;
};
Sum sum;
sum.value(5);
int myResult = sum.add(10);
是否可以将sum.add(10)
设为默认值,以便我可以得到相同的结果,如下所示:
int myArea = sum(10);
(我怀疑题目不对,也许是我找不到解决方案的原因。随意编辑。
是的,你可以。 您可以做的是重载类的operator()
以将其转换为函子。 您可以添加
int operator()(int val) { return add(val); }
对班级来说,现在sum(some_value)
和sum.add(some_value)
是一回事
这就是函数调用运算符的具体用途。
class Sum{
public:
void value(int val){ _v = val; }
int add(int val) const{ return _v + val; }
// Function call operator
int operator()(int val) const {
return add(val);
}
private:
int _v;
};
int main()
{
Sum sum;
sum.value(5);
// Calls the function call operator
int myResult = sum(10);
}
相关文章:
- 默认函数可以返回自动吗?
- 即使类不包含数据,C++ 14 是否仍会生成默认函数?
- 删除显式默认函数声明时的警告
- 使用聚合初始化模拟默认函数参数是否存在任何陷阱?
- 常量字符[] 默认函数参数
- 使编译器为 std::function 生成一个空的默认函数
- 尝试将 C++11 代码转换为 C++03 时默认函数模板参数出错
- 避免将静态变量暴露在默认函数参数中
- 默认函数对象值作为要使用lambda调用的函数参数
- C++ "overloading"第二个默认函数参数
- 显式默认函数不能声明为 constexpr,因为隐式声明不是 constexpr
- 为什么要使用std ::少用作默认函数来比较std :: map and std :: set中的键
- C++默认函数参数
- 为什么子类覆盖虚拟函数不能更改父类的默认函数参数
- 如何为函数指针设置默认函数
- 扩展的参数包是否可以"fill in"默认函数参数?
- C++ 默认函数参数不起作用
- 如何知道是传递了可选函数参数还是使用默认函数参数
- 复制省略在默认函数参数中是否有效
- C++模板参数默认函数实现