1. 程式人生 > >c++ 用指標將函式作為引數傳參

c++ 用指標將函式作為引數傳參

今天發現了一種寫法,順便記錄一下。廢話不多說,先看程式碼:

#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;

}
在這裡我們可以將(*function)視為函式的指標,直接將函式名稱傳進去,但是內部獲取的是指標,而不是函式本身,所以不用擔心這麼做是把函式拷貝一份浪費了記憶體的空間。

網上有一些用typedof方法的實現,其實也可以,但是這種方法相對更加簡潔一些。對了,上面的

int answer = operation(1, 2, addition);

addition也可以加上&,但其實都一樣。編譯器會自己讀取地址。

對了,我上次發的那個線上編譯器只支援c++98,如果想要線上測試比較新的c++功能,比如c++11或者c++14,那麼可以訪問http://cpp.sh/ (國內的網站可能開啟會慢一些)上次國內的那個網站連一個輸入函式都實現不了,這個是可以輸入的,所以功能上要比上次那個好很多,哈哈。