c++ 用指標將函式作為引數傳參
阿新 • • 發佈:2019-01-05
今天發現了一種寫法,順便記錄一下。廢話不多說,先看程式碼:
在這裡我們可以將(*function)視為函式的指標,直接將函式名稱傳進去,但是內部獲取的是指標,而不是函式本身,所以不用擔心這麼做是把函式拷貝一份浪費了記憶體的空間。#include <iostream> using namespace std; int addition(int x, int y){ return x + y; } int subtraction(int x, int y){ return x - y; } int operation(int x, int y, int (*function)(int, int)){ return (*function)(x, y); } int main(){ int answer = operation(1, 2, addition); cout << answer; }
網上有一些用typedof方法的實現,其實也可以,但是這種方法相對更加簡潔一些。對了,上面的
int answer = operation(1, 2, addition);
addition也可以加上&,但其實都一樣。編譯器會自己讀取地址。
對了,我上次發的那個線上編譯器只支援c++98,如果想要線上測試比較新的c++功能,比如c++11或者c++14,那麼可以訪問http://cpp.sh/ (國內的網站可能開啟會慢一些)上次國內的那個網站連一個輸入函式都實現不了,這個是可以輸入的,所以功能上要比上次那個好很多,哈哈。