C 函式可呼叫運算子

2021-09-16 19:11:53 字數 1042 閱讀 5950

一、什麼是可呼叫函式

func()這就是乙個可呼叫函式,某類過載了operator(),這個類物件也稱為可呼叫函式(可呼叫物件), 他們的明顯標誌是帶有圓括號。

class a ;

//過載()後可以向呼叫函式一樣呼叫類物件

int operator()(int var)

//過載()兩引數版本

int operator()(int x, int y)

};int myfun(int var)

void main()

二、function型別

不同函式有相同的返回型別和引數,這些函式的呼叫形式相同,我們可以將其新增到 map中方便呼叫

void call_function_map()

, };

cout << mymap["classa"](20) << endl;;

cout << mymap["classb"](30) << endl;;

}

注意:類operator()可以過載多個版本不影響賦值給function。【但普通函式和自定義的成員函式有多個過載時,則不能直接賦值給function,需使用函式指標進行轉換】

class a ;

//過載()後可以向呼叫函式一樣呼叫類物件

int operator()(int var)

//過載()兩引數版本

int operator()(int x, int y)

};int myfun(int var)

int myfun(int var,int value)

void main()

, };

//或轉為function型別

functionf2 = p1;

map> mymap , };

cout << mymap["a"](20) << endl;;

cout << mymap["b"](30) << endl;;

}

輸出結果

函式呼叫運算子

14.34定義乙個函式物件類,令其執行if then else的操作 該型別的呼叫運算子接受三個引數,它首先檢查第乙個形參,如果成功返回第二個引數的值 如果不成功返回第三個形參的值。includeusing namespace std class if then else int main 14.3...

函式呼叫運算子

struct absint 這個類定義了操作 函式呼叫運算子,它負責接受乙個int型別的實參,然後返回該實參的絕對值。呼叫 int i 42 absint absobj 含有函式運算子的物件 int ui absobj i 將i傳遞給absobj.operator class printstring...

c 運算子重及其呼叫

本文參考自 運算子過載就是賦予運算子新功能,其本質是乙個函式。運算子過載時要遵循以下規則 1.除了類屬關係運算子 成員指標運算子 作用域運算子 sizeof運算子和三目運算子 以外,其他運算子都可以過載。2.過載運算子限制在c 語言中已有的運算子範圍內的允許過載的運算子之中,不能建立新的運算子 3....