首頁 >後端開發 >C++ >如何使用 C++ 函數指標重載和泛型程式設計?

如何使用 C++ 函數指標重載和泛型程式設計?

PHPz
PHPz原創
2024-04-17 13:45:021160瀏覽

C 函數指標重載透過指定不同函數簽章實作指向具有相同名稱但不同參數或傳回值的多函數指標。泛型程式設計使用範本建立適用於不同類型資料的函數和資料結構,使程式碼可重複使用。使用函數指標重載需要為每種類型編寫單獨的函數,而泛型程式設計則使用通用函數處理所有類型。

如何使用 C++ 函数指针重载和泛型编程?

使用C 函數指標重載與泛型程式設計

#函數指標重載

函數指標重載允許您建立指向具有相同名稱但具有不同參數或傳回值的多個函數的指標。這是透過將函數簽名作為指標類型的一部分來實現的。

int add(int x, int y);
double add(double x, double y);

int* addPtr = add; // 指向 int 版本的函数
double* addPtr = add; // 指向 double 版本的函数

泛型程式設計

泛型程式設計使用範本來建立可套用於不同類型資料的函數和資料結構。它允許您編寫不特定於任何特定類型的可重複使用程式碼。

template <typename T>
T max(T a, T b) {
  return (a > b) ? a : b;
}

這個函數模板 max() 可以用於任何可比較類型的數據,例如 int、double 和 string。

實戰案例

考慮一個需要對不同類型資料求和的程式:

// using function pointers
int sum(int* arr, int len) {
  int result = 0;
  for (int i = 0; i < len; i++) {
    result += arr[i];
  }
  return result;
}

double sum(double* arr, int len) {
  double result = 0.0;
  for (int i = 0; i < len; i++) {
    result += arr[i];
  }
  return result;
}

// using templates
template <typename T>
T sum(T* arr, int len) {
  T result = 0;
  for (int i = 0; i < len; i++) {
    result += arr[i];
  }
  return result;
}

使用函數指針,我們需要為每種型別寫一個單獨的求和函數。使用泛型編程,我們編寫一個可用於任何類型的通用求和函數。

以上是如何使用 C++ 函數指標重載和泛型程式設計?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn