![](/img/trans.png)
[英]What are the advantages of using consteval instead of constexpr function?
[英]What are the advantages of using pointers to function?
使用函數指針而不是函數本身的真正好處是什么? 它會使執行更快嗎? 或者當它傳遞給另一個函數時它是否提供了便利?
它使您能夠在運行時“選擇”業務邏輯的一個組件 - 與硬編碼函數名稱形成對比,這限制了您選擇在編譯時使用哪個函數。
函數指針是將函數存儲在變量中並將它們傳遞給其他函數的方法。 沒有“常規功能”的“優勢”,它們是完全不同的東西,試圖比較它們沒有意義。 這就像問“哪個更好,變量或是否有陳述?”
函數指針提供否則將不可用的功能。
實際上,傳遞函數的指針比調用函數本身要慢一點。 但差別很小,幾乎沒有任何影響。
正如喬恩所說,當你可以將函數從程序的一部分傳遞給另一部分時,它在某些情況下會帶來更大的靈活性。
函數指針用於許多情況,在這種情況下,您不確定要准確調用哪個函數。 讓我們舉個例子。 你想排序一個數組。 為此,您要編寫通用排序函數。 現在這個排序函數需要比較數組元素。 但由於數組可以包含任何元素(int,浮點數,字符串,用戶定義的類型等),這種排序函數如何比較元素。 因此,在這種情況下,您可以將排序確定函數作為參數傳遞給此排序函數,並基於它可以對數組進行排序。 而且,它在另一種方式中也是有用的。 假設您要對字符串數組(一串數字)進行排序。 您可能希望以數字或字母方式對其進行排序。
在這種情況下,當您想要按數字排序時,可以傳遞比較函數,該函數根據轉換為int的字符串值進行比較。 等等...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.