下面的語法是什麼意思?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來使代碼更具可讀性和可維護性。 –