我一直在閱讀函數指針,並將它們用作其他函數的參數。我的問題是如何通過引用傳遞函數而不使用指針?我一直試圖在互聯網上找到答案,但我沒有找到一個好的答案。我知道你可以像這樣通過引用傳遞變量:void funct(int& anInt);
。你會如何做類似於此的事情,而不是對變量的引用,而是對參數的引用?另外你將如何使用函數體中的函數引用?C++:如何將參考函數傳遞給另一個函數?
回答
#include <iostream>
using namespace std;
void doCall(void (&f)(int))
{
f(42);
}
void foo(int x)
{
cout << "The answer might be " << x << "." << endl;
}
int main()
{
doCall(foo);
}
乾杯&心連心,
出於好奇,我爲什麼要使用對函數的引用而不是指向函數的指針? – fredoverflow
@FredOverflow:由於指針可能爲空或無效。一個引用保證它是有效的而不是空的(沒有空引用),否則在程序中有錯誤。 –
@Alf P. Steinbach:「或者說程序中有錯誤」理論上聽起來不錯,但如果你有'sometype&ref = * ptr'之類的東西,'指針中的地址將被簡單地複製到地址中在引用中,可能是無效的或爲空。您可能會說,當'ptr'無效或爲空時,上面的語句是未定義的行爲,但在編譯或運行時不會有任何跡象表明,所以程序員仍然需要確保它有效且非空,與使用指針相同。所以我說程序員沒有任何區別。 – newacct
- 1. 如何將void函數(void)作爲參數傳遞給另一個函數c
- 2. 如何將函數作爲參數傳遞給C++中的另一個函數?
- 3. 傳遞函數作爲參數傳遞給另一個函數
- 4. 參數傳遞給另一個函數
- 5. 參數傳遞給另一個函數
- 6. 該函數如何將參數傳遞給另一個內部函數參數
- 7. 將函數參數傳遞給另一個函數
- 8. 將函數的參數傳遞給另一個函數
- 9. 將函數的參數直接傳遞給另一個函數
- 10. 將函數的參數傳遞給另一個函數?
- 11. 將函數的所有參數傳遞給另一個函數
- 12. C++將函數參數傳遞給另一個lambda
- 13. 如何將doGet(e)參數傳遞給另一個函數?
- 14. 如何將變量參數傳遞給另一個函數?
- 15. Llvm C++ API將函數指針傳遞給另一個函數
- 16. 如何將模板函數傳遞給另一個函數
- 17. 如何將函數輸出傳遞給另一個函數
- 18. 如何將函數傳遞給python中的另一個函數
- 19. 傳遞函數的參數作爲參數傳遞給另一個函數
- 20. 將匿名函數作爲參數傳遞給另一個函數(C++)
- 21. 將多態函數作爲參數傳遞給另一個函數C
- 22. 將參數傳遞給函數,該參數必須作爲參數傳遞給python中的另一個函數
- 23. 如何將命名參數傳遞給另一個函數需要的函數?
- 24. R:如何將函數作爲參數傳遞給另一個函數
- 25. 如何將函數作爲參數傳遞給另一個函數?
- 26. 將函數作爲另一個函數的參數傳遞給嵌套函數
- 27. 傳遞函數的所有參數給另一個函數
- 28. 如何將數組從一個函數傳遞到另一個函數作爲雲函數的參考
- 29. 如何將一個函數傳遞給第一個函數參數中的另一個函數?
- 30. 如何將參數傳遞給函數?
注意:您不能傳遞功能。您只能傳遞引用或指向函數的指針。 –