使用函數指標來引用內建 -在範本類別中的「大於」運算子(「>」)等運算子中,有必要指定正確的類型重載。然而,這可能具有挑戰性。
C 內建運算符,例如算術運算符和邏輯運算符,不是真正的運算子函數。相反,它們被編譯器直接翻譯成彙編指令。因此,不可能取得它們的函數指標。
C 標準中定義的函數物件提供了一種處理類似於函數指標的操作的方法但不是實際的功能。它們是模板化對象,在其operator()函數中衰減為類似的運算子。
例如,std::greater函數物件表示大於運算子(“>”)。它可以用作模板類別中的函數指標參數。
<code class="cpp">template<typename ParamsType, typename FnCompareType> class MyAction { public: MyAction(ParamsType& arg0, ParamsType& arg1, FnCompareType& fnCpmpare) : arg0_(arg0), arg1_(arg1), fnCompare_(fnCompare_) {} bool operator()() { if((fnCompare_)(arg0_,arg1_)) { // Do this } else { // Do s.th. else } } private: ParamsType& arg0_; ParamsType& arg1_; FnCompareType& fnCompare_; }</code>
<code class="cpp">void doConditional(int param1, int param2) { MyAction<int, std::greater<int>> action(param1, param2); if(action()) { // Do this } else { // Do that } }</code>
雖然函數指標不能直接與內建運算子一起使用,但它們可以與實際函數實作的標準函式庫運算子一起使用。但是,需要為運算子實例化模板類別的特定實例,並且編譯器可能需要提示才能正確推導模板參數。
以上是## 您可以獲得指向 C 內建運算子的函數指標嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!