c++之模板函數-模板


模板就是建立通用的模具,大大提高復用性。

c++的另一種編程思想是泛型編程,主要利用的就是模板。

c++提供兩種模板機制:函數模板和類模板。

聲明:template<class T>//typename可以替換成class

函數模板

函數模板的作用:建立一個通用函數,其函數返回值類型和形參類型可以不具體制定,用一個虛擬的類型來代表。

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

void swapInt(int& a,int& b) {
    int tmp = a;
    a = b;
    b = tmp;
}
void swapFloat(float& a, float& b) {
    float tmp = a;
    a = b;
    b = tmp;
}
int main() {
    int a = 1;
    int b = 2;
    swapInt(a, b);
    cout << "a=" << a << "\t" << "b=" << b << endl;
    float c = 1.1f;
    float d = 2.2f;
    swapFloat(c, d);
    cout << "c=" << c << "\t" << "d=" << d << endl;
    system("pause");
    return 0;
}

假設我們要設置所有數據類型的交換函數,那么如果按照普通的方式來寫,就要寫很多的函數,利用泛型就可以進行簡化。

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

//模板函數
//聲明一個模板,表明T是一個通用數據類型
template<typename T>
void mySwap(T& a,T& b) {
    T tmp = a;
    a = b;
    b = tmp;
}

int main() {
    int a = 1;
    int b = 2;
    //使用模板函數有兩種方式
    //1.自動類型推導
    mySwap(a, b);
    cout << "a=" << a << "\t" << "b=" << b << endl;
    //2.顯示指定類型
    mySwap<int>(a, b);
    cout << "a=" << a << "\t" << "b=" << b << endl;
    float c = 1.1f;
    float d = 2.2f;
    mySwap(c, d);
    cout << "c=" << c << "\t" << "d=" << d << endl;
    system("pause");
    return 0;
}

輸出:

 

模板注意事項:

  • 自動類型推導必須推導出一致的數據類型T才可以使用;
  • 模板必須要確定出T的數據類型; 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM