zoukankan      html  css  js  c++  java
  • 高放的c++学习笔记之模板与泛型编程

    函数模板

    作用

    有很多时候参数的类型以及返回值的类型是可变的,我们通过定义模板来让函数能更灵活的运用。 

    我们设计一个比较函数,如果能比较的两个参数是int型的,两个参数也可能都是string型的,单独设计出两个比较的函数就会比较繁琐,此时,我们用到了函数模板。
    template<typename T>
    int cmp(T a, T b){
      return a>b;
    }

    (1)每次调用的时候,编译器用推断出的模板参数来为我们实例化一个特定版本的函数,T可被替换成任意类型。
    (2)template可被class替换,两个的作用是相同的。

    类模板

    定义类模板

    类模板的定义与模板函数的定义类似,但是声明对象的时候略有不同

    template<typename T>class gg{
    public :

    T a;

      gg(T aa):a(aa){};

    };

    gg<string> g("asa");      //声明部分

     

    非类型模板参数

    除了定义类型参数外,还可以在函数中定义非类型参数,一个非类型参数表示一个值而非一个类型。

    例如

    template<typename T, unsigned n>class gg{
    public :
      T a;
      gg(T aa):a(aa){};
      int aa();
    };

    inline和constexpr函数模板

    和正常定义函数一样,将inline或constexpr写在模板之后函数体类型之前。

    类模板的成员函数

    template<typename T, unsigned n>      //表示接下来的是一个模板

    int gg<T, n>::aa(){              //通过gg<T, n>找到函数对应的类
      for(int i = 0;i < n; i++)printf("gaofangzuishuai ");
      return a;
    }

  • 相关阅读:
    Sybase自增字段跳号处理
    Vault数据库还原/恢复问题
    值得一看的技术书
    原来爱一直在身边
    【转】VC++编程十大秘诀
    Qt 文件搜索
    字符串穷举算法(STL)
    C++ 流
    QML 学习(三)
    Qt Everything
  • 原文地址:https://www.cnblogs.com/icodefive/p/4943732.html
Copyright © 2011-2022 走看看