在C 中,內建運算子缺乏真正的函數指標針對應項,並且不存在發揮超出過載解決方案的作用。為了解決這個問題,該標準定義了反映內建運算子行為的函數物件。
該標準提供了函數物件來封裝算術和比較操作,例如如:
這些物件提供與其對應運算符相同的功能,並且可以用作函數指標參數。
某些標準函式庫運算子允許使用函數指標。然而,這需要指定所涉及物件的模板類型。例如,要使用std::basic_string 中的運算符,可以實現以下內容:
<code class="cpp">template<class Test> Test test_function (Test const &a, Test const &b, Test (*FPtr)(Test const &, Test const &)) { return FPtr(a, b); }</code>
以下程式碼示範了使用函數物件進行比較操作:
<code class="cpp">template<typename ParamsType, typename FnCompareType> class MyAction { public: MyAction(ParamsType& arg0, ParamsType& arg1, FnCompareType& fnCompare) : 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_; }; void doConditional(int param1, int param2) { MyAction<int, std::equal_to<int>> action(param1,param2); if(action()) { // Do this } else { // Do that } }</code>
以上是**如何使用函數物件來實現C內建運算子的功能? ** **的詳細內容。更多資訊請關注PHP中文網其他相關文章!