带有函数指针的初始化列表 - 这里有诀窍吗?

Joh*_*0te 2 c++ function-pointers

我一直在阅读一本关于基本数据结构的教科书,仅供审阅 - 自从我编写自己的哈希表或红/黑树以来已经有一段时间了:)

无论如何,我碰到了一些东西,让我有点兴奋.作者非常想为每个成员使用初始化列表(正如人们所希望的那样),但在这种情况下,他将函数指针传递给散列函数,他选择在构造函数中使用赋值运算符而不是设置初始化列表中的指针(他也使用此代码中的初始化列表):

template<class DataType>
HashTable<DataType>::HashTable(int (*hf)(const DataType&), int s)
    : table(s)
{
    hashfunc = hf;
}
Run Code Online (Sandbox Code Playgroud)

哪里:

int (*hashfunc)(const DataType&);
Run Code Online (Sandbox Code Playgroud)

是私人会员.

我想知道这个选择是否有一些明确的原因,如果有一个陷阱,他会在这里上釉 - 或者它是否只是随机思考.函数指针可以有一个有趣的语法,我基本上想知道它是否在这个领域引起了问题.

Mik*_*our 6

不,没有理由不能在初始化列表中初始化它.

也许有可能错误的编译器可能会混淆并将列表中的初始化解释为函数调用(因为语法类似); 也许这就是解释.