virtual int operator()(int k);

时间:2013-11-23 16:56:07

标签: c++ visual-c++

在标题中:

#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 ++中使用这些概念,所以语法很烦人

感谢您的时间,非常感谢。

2 个答案:

答案 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
}