經常見到 std::accumulate (numbers, numbers+3, init,
std::minus()) 這種使用方法:
(1) 其實,std::minus() 還是表示乙個函式——minus.operator()
(2) std::minus 是乙個類,不是乙個物件,std::minus() 其實是呼叫的建構函式
也就是說,這裡 std::minus() 這種寫法要經歷 2 步轉化,看下面的**
#include // std::cout
#include // std::minus
#include // std::accumulate
struct myclass
};int main ()
; myclass myobject;
std::cout << "using default accumulate: ";
std::cout << std::accumulate(numbers,numbers+3,init);
std::cout << '\n';
// std::minus() 這是建構函式
std::cout << "using functional's minus: ";
std::cout << std::accumulate (numbers, numbers+3, init, std::minus());
std::cout << '\n';
// myobject 和 myclass() 是一樣的
std::cout << "using custom object: ";
std::cout << std::accumulate (numbers, numbers+3, init, myobject);
std::cout << " ";
std::cout << std::accumulate (numbers, numbers+3, init, myclass());
std::cout << '\n';
return 0;
}
過載函式呼叫操作符
函式呼叫操作符?函式呼叫操作符是 因此此操作符的函式過載是operator 過載函式呼叫操作符的類物件稱為函式物件或仿函式,因此我們可以像使用函式名一樣使用物件名。先看乙個簡單的例子。過載了函式呼叫操作符的乙個類 class area 上面的類中,操作符函式計算乙個面積,它是兩個整數實參的乘積。為了...
函式呼叫符()過載及總結
為了優化類成員函式的呼叫,對函式呼叫符 進行過載 include using namespace std class fun 過載 第乙個 是過載的符號 第二個 是標明要傳參 intoperator int x,int y void test01 intmain int argc,char ar 因...
C 中函式呼叫操作符的過載
1,本博文講述函式物件問題 2,客戶需求 1,編寫乙個函式 1,函式可以獲得斐波那契數列每項的值 2,每呼叫一次返回乙個值 3,函式可根據需要重複使用 4,示例 1 for int i 0 i 10 i 2 3,第乙個解決方案程式設計實驗 1,main.cpp 檔案 1 include 2 incl...