模板中 類型轉換與模板類型參數

類型轉換與模板類型參數

與非模板函數一樣,我們在一次調用中傳遞給函數模板的實參用來初始化函數的形參。如果一個函數形參的類型使用了模板類型參數,那麼採用特殊的初始化規則。只有很悠閒的集中類型轉換會自動的應用於這些實參。編譯器通常不是對實參類型進行轉換,而是生成一個新的模板實例。

與往常一樣,頂層的const無論是在形參還是在實參中,都會被忽略,在其他類型轉換中,能在調用中應用與函數模板的包括下面兩項。

const轉換:可以將一個非const對象的引用傳遞給一個const的引用形參。

數組或函數指針轉換:如果函數形參不是引用類型,則可以對數組或函數類型的實參應用正常的指針轉換。一個數組實參可以轉換爲一個指向其首元素的指針。類似的。一個函數實參可以轉換爲一個該函數類型的指針。

#include <cstring>
#include <iostream>
#include <vector>
#include <grp.h>
#include <unistd.h>

using namespace std;

template <typename T> T fobj(T data1,T data2)
{
    return data2;
}
template <typename T> T fref(const T& data1,const T& data2)
{
    return data2;
}


int main()
{
    string s1 = "value a";
    string s2 = "value b";
    fobj(s1,s2);
    fref(s1,s2);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章