首頁 > 後端開發 > C++ > ## 您可以獲得內建 C 運算子的函數指標嗎?

## 您可以獲得內建 C 運算子的函數指標嗎?

DDD
發布: 2024-10-25 10:20:30
原創
676 人瀏覽過

## Can You Get Function Pointers for Built-in C   Operators?

是否可以取得內建標準運算子的函數指標?

簡介

函數指標提供了一種引用特定運算子的方法操作員功能。然而,對於內建標準運算符,這種方法可能並不簡單。本文深入探討了此限制背後的原因,並探討了實現類似功能的替代解決方案。

為什麼函數指標不可用於內建運算子

根據 C 標準 (13.6/ 1)、內建運算子不是常規運算子函數,因此不能有函數指標指向它們。它們僅參與重載解析,而不服務於任何其他目的。

替代方案:使用函數對象

為了克服此限制,C 標準引入了函數對象,它提供了與內置函數類似的功能通過模板化對象進行操作。例如,為了進行比較,定義了 equal_to、greater 和 less_equal 等函數物件。這些物件可以用作函數指標參數。

範例

在提供的程式碼片段中,目標是比較範本類別中的兩個整數。使用函式物件技術,可以實現如下:

<code class="cpp">class MyAction {
  bool operator()() {
    if (fnCompare_(arg0_, arg1_)) {
      // do this
    } else {
      // do s.th. else
    }
  }
};</code>
登入後複製

這裡,fnCompare_可以是像std::equal_to這樣的函式物件;執行比較。

標準類別類型運算子

除了函數物件之外,標準函式庫運算子也可以用作函數指標。但是,必須引用模板的相應實例。例如:

<code class="cpp">std::basic_string<char> a("test"), b("test2");
std::cout << test_function<std::basic_string<char>>(a, b, &std::operator+);</code>
登入後複製

結論

雖然函數指標不能直接用於內建標準運算符,但函數物件和標準類別運算子提供的替代解決方案允許等效功能。這些替代方案允許使用特定的標準運算子作為函數指針,解決內建運算子帶來的限制。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板