虚拟int运算符()(int k);
virtual int operator()(int k);
在标题中:
#include <iostream>
#include <vector>
using namespace std;
template<class Key>
class HashFunction{
public:
int N;
virtual int operator()(Key k)=0;
};
class MyHashFunction : public HashFunction <int> {
public:
virtual int operator()(int k);
};
然后在cpp文件中:
#include "Hash classes.h"
int MyHashFunction::operator ()(int k){
return k% this->N ;
}
有人能解释一下这个语法吗virtual int运算符()(键k)=0;我了解虚拟方法和"=0"以及模板是什么。。。一般来说,但我很难弄清楚这个"int operator()(Key k)"是什么意思,以及它在cpp文件中是如何使用的,我仍然没有太多在c++中使用这些概念的经验,所以语法很烦人
非常感谢您抽出时间。
您为对象MyHashFunction定义了运算符(),这意味着您可以像调用函数一样调用实例。
例如
MyHashFunction myHashFunctionInstance;
myHashFunctionInstance(20); //Call the operator()
这只是重载函数调用运算符的虚拟版本,即()
-运算符。
例如:
void foo(Base const & x)
{
int n = x(1, 2, 3); // calls int Base::operator()(int, int, int),
// which may be virtual and dispatched dynamically
}
相关文章:
- int* 和 int[] 类型对二进制运算符 + 的操作数无效
- 运算符 += 应用于 std::valarray<int*>
- 我的运算符重载没有在我的 int main 中返回?
- 类型"int"和"const char [15]"到二进制"运算符<<"的无效操作数^
- 使用算术运算符时如何避免从 char 到 int 的隐式转换
- ostream_iterator运算符=在pair<int,int>上失败,但在包装器类上工作。我不能为成对<>重载运算符<<吗?
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- 在C++中,为什么int可以使用new运算符初始化变量,而double不能
- 赋值和添加运算符重载(2个表和int的串联)
- 没有运算符"=="与这些操作数匹配。操作数类型为:int == type_name'
- 运算符[]和运算符int()的不明确重载
- 二进制">>":未找到采用类型为"std::p air<int,int>"的右操作数的运算符
- 错误:运算符 [] 不匹配。在比较列表中的 int 和 int 时<int>,
- 如何在 std::map<const int、int> C++ 中重载插入运算符>>?
- 为什么我不能使用在 Visual C++ 32 位中实现运算符无符号 int() 作为数组索引的类?
- 统一初始化是隐式发生的,即使 int 强制转换运算符是使用 explicit 关键字声明的.原因是什么?
- C++11 无符号字符在使用运算符 = 时变为 int
- 希望修复 main.cpp 与"std::istream&<< int&"运算符不匹配
- 虚拟int运算符()(int k);
- int 运算符 != 和 == 与零相比