c++,模板函數的定義和使用【初探】


 

// demo.cpp :
// 模版函數的定義和使用:
// 1.模板支持返回參數類型為模板參數。
//    template <typename RET_T , typename IN1_T , typename IN2_T >
//    RET_T prifunc2(IN1_T in1 , IN2_T in2)  {  ...  }
// 2.因為在函數調用時無法直接推斷返回類型,所以可以顯示的提供模板實參。prifunc2<double, int ,int>
// 3.模板聲明時RET_T放到第一位,使用時可以只提供返回值類型,而剩余的參數則按常規方式利用形參進行推斷。prifunc2<double>

#include<iostream>
using namespace std;

template <typename RET_T , typename IN1_T , typename IN2_T >
RET_T prifunc2(IN1_T in1 , IN2_T in2)
{
    RET_T ret;
    ret = in1 +in2;
    cout<<"in1 = "<<in1<<endl;
    cout<<"in2 = "<<in2<<endl;
    ret = in1+in2 ;
    cout<<"ret = "<<ret<<endl;
    return ret;
}

int main()
{
    int v = prifunc2<double, int ,int>(11,22);//返回值放在第一位。
    int vv = prifunc2<double>(33,44);//可以只提供返回值的聲明,其他會自行推斷出來。
    while(1);
    return 0;
}
//測試結果:
// in1 = 11
// in2 = 22
// ret = 33
// in1 = 33
// in2 = 44
// ret = 77

 

 

template <class RET, class T, class V, class X>
RET func(T t, V v, X x, int i)
{
    RET ret; 
    cout<<"value="<<t<<endl;
    cout<<"value="<<v<<endl;
    cout<<"value="<<x<<endl;
    cout<<"value="<<i<<endl;

    ret = t; 
    return ret;
}

void f2(void)
{
         int i = 11;
         char c = 39;
         float f = 9.01;
     
         char* str = "hello";
         char cstr[] = "haha";
    
        char* p1 = func<char *>(str,c,f,i);
        char* p2 = func<char *>(str,cstr,c,i);

         cout<<"p1:"<<p1<<endl;
         cout<<"p2:"<<p2<<endl;

        /*
        value=hello
        value='
        value=9.01
        value=11
        value=hello
        value=haha
        value='
        value=11
        p1:hello
        p2:hello
        請按任意鍵繼續. . .
        */
}

 


免責聲明!

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



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