下面的语法是什么意思?C++中的(*)语法是什么意思?
set<element*, bool (*) (element *, element *)> * getNumbers();
我不熟悉(*)
部分。任何解释都会很棒。谢谢
下面的语法是什么意思?C++中的(*)语法是什么意思?
set<element*, bool (*) (element *, element *)> * getNumbers();
我不熟悉(*)
部分。任何解释都会很棒。谢谢
这是一个函数指针。你可以在这里进一步阅读,例如: http://www.cprogramming.com/tutorial/function-pointers.html
它是一个函数指针,更准确地说是bool (*) (element *, element *)
是一个函数指针的类型。在这种情况下,它的功能需要两个element
指针并返回一个bool
。
当你看到它用作函数参数时,它更有意义,那么它会在第一个*
之后有一个名称。例如bool (*fun) (element *, element *)
。
bool (*) (element *, element *)
命名指向函数的指针的类型,其中该函数以两个element*
指针作为参数并返回bool
。
第二个模板参数是函数指针,用于比较2 element*
。如果您将这样的函数指针放在std :: set的构造函数中 - 您将能够使用自定义比较函数创建一组元素(或者没有重载运算符<)。
这意味着第二模板参数是一个函数指针:
bool (*) (element *, element *)
是“指针,采用两个element*
S和返回bool
一个函数”。
您可能还会看到(*)
与指向数组的指针;
int (*) [32]
是“指向32个数组的指针”的类型。
[C++函数指针作为参数]的可能重复(http://stackoverflow.com/questions/2582161/c-function-pointer-as-parameter) –
这将是一个很好的地方使用typedef来使代码更具可读性和可维护性。 –