在标题中:
#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 operator()(Key k)= 0; 我理解虚拟方法和'= 0'以及一般模板是什么......但是我无法弄清楚这个“int operator()(Key k)”是什么意思,然后它是如何在cpp文件中使用的,我仍然没有太多经验在c ++中使用这些概念,所以语法很烦人
感谢您的时间,非常感谢。
答案 0 :(得分:1)
您可以为对象MyHashFunction定义operator(),这意味着您可以像调用函数一样调用实例。
例如
MyHashFunction myHashFunctionInstance;
myHashFunctionInstance(20); //Call the operator()
答案 1 :(得分:0)
这只是重载函数调用运算符的虚拟版本,即()
- 运算符。
例如:
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
}