首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 模板入門:類別與函數模板的核心觀念

     編輯:關於C++

模板是 C++ 實現泛型程式設計的關鍵機制,允許以非特定資料類型定義類別或函數,於使用時再代入具體型別,大幅提升程式碼重用率。本文以淺顯語言解析類別模板與函數模板的基本語法與應用。

為什麼需要模板?

若無模板,相同邏輯卻需處理不同資料型別(如 int、float、char*)時,必須撰寫多個重載版本,導致程式碼冗餘。模板讓我們只寫一次邏輯,編譯器自動產生對應型別的程式碼。

類別模板

關鍵字 template <class T> 配合 <> 符號宣告。以下範例展示一個可儲存任意型別資料的類別:

#include <iostream.h>
template <class T>
class MyClass {
    T temp;
public:
    MyClass(T name) { temp = name; }
    T Vomit() { return temp; }
};

void main() {
    MyClass<int> t1(2);
    cout << t1.Vomit() << endl;
    MyClass<char*> t2("醉拳");
    cout << t2.Vomit() << endl;
    MyClass<float> t3(3.14159);
    cout << t3.Vomit() << endl;
}

若將成員函數定義移至類別外部,需加上模板前綴並指明類別名稱帶入型別參數:

template <class T>
T MyClass<T>::Vomit() { return temp; }

函數模板

函數模板同樣以 template <class T> 開頭,編譯器依呼叫時的實際參數型別實例化:

#include <iostream.h>
template <class T>
void f(T qie) { cout << qie << endl; }

#define X f<char*>
void main() {
    f<int>(3);
    f<char>('r');
    X("aadf");
}

執行結果將依序輸出 3、r、aadf,驗證同一函數模板可處理多種型別。

小結

掌握 template <class T> 與 <T> 的搭配,即能靈活運用模板減少重複程式碼。進階主題如特化、偏特化、非型別參數等,留待後續深入探討。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved