zoukankan      html  css  js  c++  java
  • 模板与范型编程(非类型模板形参),数组初始化

    模板形参不必全都是类型.

    在调用函数时非类型形参将用值代替,值的类型在模板形参表中指定.

     e.g.:

    #include <iostream>
    using namespace std;
    typedef int T ;
    
    template <typename T> //<class T>
    inline  T subtract(T t1,T t2){
        return t1-t2;
    }
    template <class T>
    class MyCls{
    public:
        T t1;
        T GetT(){return t1;}
    };
    //(非类型模板形参)
    //初始化数组
    template <typename T,size_t N>
    void arr_init(T (&arr)[N])
    {
        for(int i=0;i<N;++i){
            arr[i]=0;
        }
    }
    //计算和
    template <typename T,size_t N>
    T arr_sum(T (&arr)[N])
    {
        T sum=0;
        for(int i=0;i<N;++i){
            sum += arr[i];
        }
        return sum;
    }
    int main()
    {
        int arr[10];
        for(int i=0;i<10;++i){
            cout<<arr[i]<<",";
        }
        cout<<endl;
    
        arr_init(arr);
    
        for(int i=0;i<10;++i){
            cout<<arr[i]<<",";
        }
        cout<<endl;
        //赋值后
        for(int i=0;i<10;++i){
            arr[i]=i+1;
        }
        int result= arr_sum(arr);
        cout<<result<<endl;
    
        /*
        int a= subtract(1,2);
        cout<<a<<",double:"<<subtract(1.1f,2.2f)<<endl;
        MyCls<int> mc1;
        mc1.t1=123;
        cout<<mc1.GetT()<<endl;
    
    
        MyCls<double> mc2;
        mc2.t1=123.12345;
        cout<<mc2.GetT()<<endl;
    */
        return 0;
    }
    
    
  • 相关阅读:
    HTML静态网页--JavaScript-简介
    html 表单 css样式表
    html 表格 嵌套 frameset 热点
    触发器
    存储过程 if 复习 while 学习
    变量运算符
    SQL数学函数
    SQL数据库基础
    批處理文章引用
    对Excel操作(VBA)
  • 原文地址:https://www.cnblogs.com/wucg/p/1859947.html
Copyright © 2011-2022 走看看