函數指針函子嗎?是否有一個虛擬仿函數可以幫助兄弟仿函數靜靜地編譯?函數指針和函子
函數指針和函子
回答
至少與術語在C常使用++(警告:它的使用完全不同相對於其它語言如Haskell中),一個仿函數是一個類(或類的一個實例),該過載operator()
所以它可以像一個函數一樣被調用。
因爲它們使用相同的語法,所以可以寫一個模板來接受函數指針或函數互換實例。然而,並非所有的算法都會這樣做 - 有些人預計(例如)您爲argument_type
和result_type
之類的東西提供了typedef
。標準庫提供了幾個類(unary_function
和binary_function
)作爲你的函子的基類來提供這些類。如果你願意,你可以自己提供 - 這些基類純粹是爲了方便(有些人不覺得它們特別方便)。
+1,但補充說一個函數指針不是*實際*函子,儘管它可以用於需要其中的模板。 – Wyzard
我一直聽到和定義過,functor是可以調用的任何東西,無論是函數對象還是實際函數。而你所稱的函子是一個函數對象。 –
非常感謝,我無法贊成,但已將您的答覆標記爲已接受的答案,這非常有用。 –
函數指針是實函數的地址。一個函子是一個類,operator()
已經超載;這些類的實例可以作爲函數傳遞並使用相同的語法進行調用。所以不,函數指針不是函子。
我不知道「virtual functors」或「sibling functors」是什麼,所以我無法回答你的第二個問題。
謝謝你的解釋 –
- 1. 函數和指針
- 2. 狀態機,子類和函數指針
- 3. 函數指針指向一個函數指針的函數
- 4. 函數指針和正常函數
- 5. 函數指針和虛函數
- 6. 指針?指針函數?
- 7. 函數指針
- 8. 函數指針
- 9. 函數指針
- 10. 函數指針
- 11. 函數指針
- 12. 函數指針
- 13. 陣列指針和函數
- 14. 代表和函數指針
- 15. 文件指針和函數
- 16. C函數指針和typedef
- 17. 將指針指向成員函數作爲函數指針
- 18. 指向結構函數指針的函數指針
- 19. C++函數指針
- 20. NULL函數指針
- 21. Python函數指針
- 22. MPI +函數指針?
- 23. C#函數指針
- 24. Golang,指針,函數
- 25. Reg函數指針
- 26. 函數與指針
- 27. C指針函數
- 28. c函數指針
- 29. 指針函數C++
- 30. 函數指針數組指針用作函數的返回值
什麼是兄弟函子? –
或虛擬函子 –
C++ 11引入了「可調用類型」的概念,這意味着(鬆散地)某些像'INVOKE(yourthing,a,b,c)'這樣的結構擴展爲'yourthing(a, b,c)',必須有意義;它包含函數指針和函數,可能是一般思考的好方法。 –