我正在使用c ++文件并遇到以下行:
tmp.sort(Hash::pairval, printPair, (void *)(tmp.bitSize()));
我最不确定(void *)的含义。 bitsize()是一个函数,我之前听过一个传递函数指针的术语。这是什么?
我知道::通常是范围解析运算符,我在.cpp / .h对象类型文件中看到过。我相信它在这里服务于同一目的,说明在哈希中找到了对。
由于
答案 0 :(得分:0)
(void *)只是将tmp.bitSize()的返回值强制转换为void指针类型。在C ++和c中,Casting是一种非常常见的操作。
答案 1 :(得分:0)
Hash::pair
很可能是对类Hash
的静态成员的调用。
(void*)
部分是tmp.bitSize()
的无效指针转换,很可能返回某种值。所以没有函数指针。
答案 2 :(得分:0)
我最不确定(void *)的含义。 bitsize()是一个函数,我之前听过一个传递函数指针的术语。这是什么?
不。注意括号tmp.bitSize()
是一个被调用的函数调用表达式并返回一个值。因此 - 这里没有涉及函数指针。
然后将返回值强制转换为指向void的指针类型(即指向某种类型的catch-all“指针”),以便传递给期望这种指针的函数。
为什么在地球上有人会将一个比特大小(看起来像一个数字)转换为指针,我不知道。这介于可疑和不正确之间。
阅读casting in C++。不鼓励使用C风格的演员阵容,因为strict aliasing rule而投射到void*
很少有用且常常很危险。
知道::通常是范围解析运算符,我在.cpp / .h对象类型文件中看到过。我相信它在这里服务于同一目的,说明在哈希中找到了对。
这是正确的。