首頁 > 後端開發 > C++ > C 中模板參數推導如何決定陣列大小?

C 中模板參數推導如何決定陣列大小?

Linda Hamilton
發布: 2024-12-05 12:12:14
原創
900 人瀏覽過

How Does Template Argument Deduction Determine Array Sizes in C  ?

模板參數推導如何揭示陣列大小

在提供的 C 程式碼中,模板函數 cal_size 列印陣列參考參數的大小。有趣的是模板參數 N 如何自動反映傳遞數組的長度。

模板參數推導

N 不是一個初始化變數;它是一個編譯時常數。透過稱為模板參數推導的過程,T 和 N 都是從傳遞給模板函數的參數推斷出來的。

考慮以下對 cal_size 的呼叫:

  • 對於 a 數組(長度 6):編譯器將 T 推斷為 int,將 N 推斷為 6。它產生一個專門的函數:
void cal_size_int_6(int (&a)[6]) {
  std::cout << "size of array is: " << 6 << std::endl;
}
登入後複製
  • 對於b 數組(長度1):同樣,編譯器將T 推斷為int,N 推斷為1,從而產生另一個專用函數:
void cal_size_int_1(int (&a)[1]) {
  std::cout << "size of array is: " << 1 << std::endl;
}
登入後複製

單獨的函數呼叫

本質上是 cal_size 範本轉換為具有 N 和 T 硬編碼值的單獨專用函數。 main 函數等效於:

int main() {
  cal_size_int_6(a);
  cal_size_int_1(b);
}
登入後複製

總之,模板參數推導使模板能夠從參數類型推導出數組大小。底層機制涉及為每個獨特的參數類型組合產生專門的函數,每個函數都有自己靜態確定的 N 和 T 值。

以上是C 中模板參數推導如何決定陣列大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板