zoukankan      html  css  js  c++  java
  • c++之模板

    1. 函数模板
    
    普通函数
    
    void Swap(int &, int &);
    
    模板函数
    
    template <typename T>
    
    void Swap(T &, T &);
    
    显示具体化,下面两个等价
    
    template<> void Swap<int>(int &, int &);
    
    template<> void Swap(int &, int &);
    
    注意:具体化将覆盖模板函数,普通函数将覆盖具体化和模板函数。
    
     
    
    显式实例化函数
    
    template void Swap<int>(int &, int &);
    
    注意:在同一编程单元中使用同一种类型的显式实例和显示具体化将出错。
    
     
    
    2.类模板
    
    多参数类型
    
    template <typename T1, typename T2>
    
    class Pair
    
    {
    
    private:
    
      T1 a;
    
      T2 b;
    
    };
    
     
    
    默认类型模板参数
    
    template <typename T1, typename T2 = int>
    
    class Topo
    
    {};
    
    类模板类型参数提供默认值,但不能为函数模板参数提供默认值。
    
     
    
    模板具体化
    
    1.隐式实例化
    
    A<int> *temp; 不会生成类的隐式实例化
    
    temp = new A<int>; 生成类的定义
    
     
    
    2.显式实例化
    
    声明必须位于模板定义所在的名称空间中,
    
    template class A<string, 100>;
    
     
    
    3.显式具体化
    
    通用的模板
    
    template <typename T>
    
    class SortedArray
    
    {};
    
    具体化
    
    template <> class SortedArray<char *>
    
    {};
    
     
    
    4.部分具体化
    
    普通模板
    
    template <typename T1, typename T2>
    
    class Topo
    
    {};
    
    部分具体化
    
    template <typename T1> class Topo<T1, int> {};
    
     
    
    3.模板类和友员
    
    非模板友员
    
    template <typename T>
    
    class hasFriend
    
    {
    
      friend void counts();
    
      friend void report(HasFriend<T>&);
    
    }
    
    模板类的约束模板友元函数
    
    template <typename T> void counts();
    
    template <typename T> void report(T &);
    
     
    
    template <typename TT>
    
    class hasFriend
    
    {
    
      friend void counts<TT>();
    
      friend void report<>(HasFriend<TT>&);
    
    }
    
    模板类的非约束模板友元函数
    
    template <typename T>
    
    class ManyFriend
    
    {
    
      template <typename C, typename D> friend void show2(C &, D &);
    
    };
  • 相关阅读:
    第七章读书笔记
    第八章读书笔记
    第五章读书笔记
    第六章读书笔记
    总结
    第四章读书笔记
    第十一章读书笔记
    第十章读书笔记
    第九章读书笔记
    第八章读书笔记
  • 原文地址:https://www.cnblogs.com/kaishan1990/p/5468811.html
Copyright © 2011-2022 走看看