1. 程式人生 > >函式呼叫運算子筆記

函式呼叫運算子筆記

參考:C++ Primer 5th P506.

如果類過載了函式呼叫運算子,則我們可以像使用函式一樣使用該類的物件。 

例子:

struct absInt
{
   int operator()(int val)     const {
     return val < 0? -val:val;
}
};

呼叫:

int i = -42; 
absInt absObj;
int ui = absObj(i) ; //將i傳遞給absInt.operator()

即使absObj只是一個物件而非函式,我們也能呼叫該物件。 呼叫該物件實際上是在執行過載的呼叫運算子。

函式呼叫運算子必須是成員函式。一個類可以定義多個不同版本的呼叫運算子,彼此之間應該在引數數量或型別上有所區別。 

如果類定義了呼叫運算子,則該類的物件稱為函式物件。因為可以呼叫這種物件,所以我們說這些物件的"行為像是函式一樣"。