繁体   English   中英

在C ++中将函数用作类成员

[英]Using function as class member in C++

我来自Java,虽然我对C ++和C有所了解,但并不深入。 我正在创建哈希表类,它将封装存储值和键。 但是问题是,例如在构造函数自定义函数中传递哪种更好的方法,该函数将在表中计算哈希键。

在Java中,我将使用函数(接口)将其设置为类成员。 在C ++中使用函数指针作为成员的最佳实践是什么? 请建议如何实施。

C ++的做法是使用可计算类型的可调用类型对您的类进行参数化:

template<class Key, class Value, class Hash> class hashtable;

这允许将任何可调用对象用作您的哈希函数,无论是普通函数还是函子对象。

然后在构造函数中传递可调用对象:

template<class Key, class Value, class Hash>
class hashtable
{
  hashtable(Hash h);
};

这使您可以指定不同的哈希函数,而无需创建新类。

最后,为了使hashtable的声明和构造更加方便,我们指定默认模板参数和构造函数参数:

template<class Key, class Value, class Hash = std::hash<Key> >
class hashtable
{
  hashtable(Hash h = Hash());
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM