我的一位老師用這個類型聲明:使用的typedef來包裝功能
typedef void (*SortFunction)(int a[], int n);
創建一個類型,它可以容納一個指向函數 和可用於以後調用該函數在程序。
我也知道,要傳遞一個函數,你必須 括號包住函數名和函數名後包裹在括號中的功能的 參數的參數以及像這樣
function someFunction((anotherfunction)(type arg1, type arg2,...)){
...
}
我想知道爲什麼你必須像這樣在括號中包裝一個函數?這是大多數C++編譯器的內置函數,還是我們程序員使用 以簡化代碼中的參數的一個竅門?另外,爲什麼需要引用typedef語句中的「SortFunction」 ,爲什麼用於使用SortFunction的變量只能保存函數而不是指向它?
請注意,如果我閱讀最新的C++ 11標準權限,則上下文無關的lambdas可以隱式轉化爲函數指針。 – Yakk
@Yakk你可能是對的,但我不得不支持這兩個編譯器。但是,它們都沒有特別強大的C++ 11支持。 – Rook
是的 - 我相信這是在標準化週期後期加入的。或者,也許它沒有被添加,只是考慮... – Yakk