zoukankan      html  css  js  c++  java
  • 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
            请按任意键继续. . .
            */
    }
  • 相关阅读:
    postgres 输出数据集的自定义函数
    python 验证码识别初探
    python 位运算【实测】
    postgresql 安装插件
    pyasn1 安装异常
    K&R C Note
    如何安全地删除固态硬盘(SSD)、U盘等闪存设备上的文件使其无法恢复?
    C语言枚举类型的使用及其优越性
    算法设计之简易模拟推特(数据结构的综合练习)
    UML笔记之类图
  • 原文地址:https://www.cnblogs.com/mylinux/p/4094218.html
Copyright © 2011-2022 走看看