在C++中,(*)语法是什么意思?

9
以下语法是什么意思?
set<element*, bool (*) (element *, element *)> * getNumbers();

我对(*)这个部分不熟悉。希望能够给我一些解释,谢谢。


3
可能是C++函数指针作为参数的重复问题。 - Jaa-c
1
这将是使用typedef使代码更易于阅读和维护的好地方。 - Dale Wilson
5个回答

10

这里意味着第二个模板参数是一个函数指针:

bool (*) (element *, element *)

是指向接受两个 element* 并返回 bool 的函数的指针。

您还可以在指向数组的指针中看到 (*) ;

int (*) [32]

这是类型“指向包含32个 int 的数组”的指针。


2

这是一个函数指针,更准确地说,bool (*) (element *, element *) 是函数指针的类型。在这种情况下,它是一个接受两个 element 指针并返回一个 bool 的函数。

当你将其用作函数参数时,第一个 * 后面会有一个名称,这样更容易理解。例如,bool (*fun) (element *, element *)


0

0

bool (*) (element *, element *) 是一个函数指针类型的名称,其中该函数接受两个element*指针作为参数,并返回一个bool值。


0

第二个模板参数是函数指针,旨在比较2个element*。如果您将这样的函数指针放入std::set的构造函数中,则可以创建具有自定义比较函数(或没有重载运算符<)的元素集。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接