首頁 >後端開發 >C++ >您可以在 C 中使用內建運算子的函數指標嗎?

您可以在 C 中使用內建運算子的函數指標嗎?

Patricia Arquette
Patricia Arquette原創
2024-10-25 10:43:02671瀏覽

Can You Use Function Pointers with Built-in Operators in C  ?

內建標準運算子可以有函數指標嗎?

在 C 中,不能直接引用內建運算符的函數指針,因為它們實際上並不代表函數物件。根據 C 11 標準,內建運算子是專門為重載解析而設計的,不能用於其他目的。

克服限制:

解決方法為此,您可以使用標準函式庫(第 20.8 節)中定義的函數物件。這些函數物件(例如用於比較的 equal_to)會衰減為其 operator() 函數中的等效運算子。它們可以作為函數指標的有效參數。

存取標準類別運算符:

雖然內建運算子無法直接訪問,但您可以使用標準庫運算子函數指標。但是,您必須指定適當的模板實例來指導編譯器。例如,如果要使用std::basic_string 運算符,則需要明確指定其模板類型,如下所示:

<code class="cpp">typedef std::basic_string<char> string_type;
...
std::cout << test_function<string_type>(a, b, &amp;std::operator+) << std::endl;</code>

結論:

雖然內建運算子由於其獨特的作用而無法擁有直接的函數指針,但您可以透過標準庫提供的函數物件或透過為標準類運算符指定必要的模板實例來存取它們的功能。

以上是您可以在 C 中使用內建運算子的函數指標嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn