C++(函式指標)

做梦当财神發表於2024-07-01

目錄
  • 基本語法
    • 示例
  • 常見用途
  • 注意事項

函式指標是指向函式的指標,它儲存了函式的地址,可以透過它呼叫指向的函式。函式指標在C++中具有多種用途,例如回撥函式、動態函式呼叫以及實現多型等。

基本語法

函式指標的宣告語法如下:

返回型別 (*指標名)(引數列表);

示例

  1. 宣告和定義一個函式指標:
// 一個返回int,接受兩個int引數的函式
int add(int a, int b) {
    return a + b;
}

// 宣告一個函式指標
int (*funcPtr)(int, int);

// 將函式指標指向函式add
funcPtr = add;

// 使用函式指標呼叫函式
int result = funcPtr(2, 3); // result == 5
  1. 使用typedef簡化函式指標宣告:
// 使用typedef定義函式指標型別
typedef int (*FuncPtrType)(int, int);

// 使用typedef定義函式指標變數
FuncPtrType funcPtr = add;

// 使用函式指標呼叫函式
int result = funcPtr(2, 3); // result == 5

常見用途

  1. 回撥函式:
    回撥函式是指透過函式指標作為引數傳遞的函式,通常用於實現事件驅動的程式設計。
#include <iostream>

// 定義一個回撥函式型別
typedef void (*CallbackFunc)(int);

// 一個執行操作並呼叫回撥函式的函式
void performOperation(CallbackFunc callback, int value) {
    // 執行一些操作
    int result = value * 2;
    // 呼叫回撥函式
    callback(result);
}

// 回撥函式的實現
void myCallback(int result) {
    std::cout << "Callback called with result: " << result << std::endl;
}

int main() {
    // 使用回撥函式
    performOperation(myCallback, 5);
    return 0;
}
  1. 動態函式呼叫:
    函式指標可以用於在執行時選擇和呼叫不同的函式,這在某些需要動態行為的場景下非常有用。
#include <iostream>

int add(int a, int b) {
    return a + b;
}

int subtract(int a, int b) {
    return a - b;
}

int main() {
    int (*operation)(int, int);
    char op;

    std::cout << "Enter operation (+ or -): ";
    std::cin >> op;

    if (op == '+') {
        operation = add;
    } else if (op == '-') {
        operation = subtract;
    }

    int result = operation(10, 5);
    std::cout << "Result: " << result << std::endl;

    return 0;
}

注意事項

  1. 函式指標型別要匹配:
    函式指標的型別必須與指向的函式型別完全匹配,包括返回型別和引數列表。
  2. 指標初始化:
    在使用函式指標之前,應確保它已正確初始化,指向有效的函式地址,否則可能會導致未定義行為。

函式指標是C++中強大且靈活的特性,透過它可以實現許多高階程式設計技巧,提升程式碼的可複用性和靈活性。

相關文章