虚拟int运算符()(int k);

virtual int operator()(int k);

本文关键字:int 运算符 虚拟      更新时间:2023-10-16

在标题中:

#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
}
相关文章: