天天看點

C++函數模闆(function template)

C++提供了函數模闆(function template)。所謂函數模闆,實際上是建立一個通用函數,其函數類型和形參類型不具體指定,用一個虛拟的類型來代表。這個通用函數就稱為函數模闆。

凡是函數體相同的函數都可以用這個模闆來代替,不必定義多個函數,隻需在模闆中定義一次即可。在調用函數時系統會根據實參的類型來取代模闆中的虛拟類型,進而實作了不同函數的功能。

下面通過一個傳回最大值的函數來舉例。

定義函數模闆的一般形式為:

    template < typename T> 

    傳回值類型 函數名 (參數表) {

    }

或者:

    template < class T> 

    傳回值類型 函數名 (參數表) {

    }

 其中傳回值類型和參數類型可以用T來指代

//
//  main.cpp
//  TestTemplateFunc
//
//  Created by cc on 14-3-30.
//  Copyright (c) 2014年 cc. All rights reserved.
//

#include <iostream>

using namespace std;

//聲明模闆函數
template <class T>
T calcMaxValue(T x, T y);

int main(int argc, const char * argv[]) {
    
    //調用函數時,如果想讓T指代int類型,則傳入int實參,傳回int類型
    int maxVal = calcMaxValue(15, 5);
    
    //如果想讓T指代float類型,則傳入的參數就是float類型,傳回的類型也是float類型
    //其他類型同理,使用函數模闆可以減少函數重載的使用,優化代碼量
    float maxVal2 = calcMaxValue(231.12f, 555.231f);
    
    cout << "較大值:" << maxVal << endl;
    cout << "較大值:" << maxVal2 << endl;

    return 0;
}

//定義模闆函數,傳回值類型和形式參數都用T來表示
template <class T>
T calcMaxValue(T x, T y) {
    return (x > y) ? x : y;
}
           

輸出結果:

C++函數模闆(function template)

本文由CC原創總結,如需轉載請注明出處:http://blog.csdn.net/oktears/article/details/22583207