zoukankan      html  css  js  c++  java
  • 模板的特化

    模板分为类模板和函数模板,特化分为全特化和偏特化(特化是对模板的特化,因此必须存在模板才可以进行特化)

    • 全特化:给模板中的所有模板参数指定一个具体的类
    • 偏特化:部分指定模板参数的类
    • 类模板可以全特化也可以偏特化
    • 函数模板只能全特化(因为重载可以达到偏特化的效果)

    类:

     1 template<typename T1, typename T2>  
     2 class Test  
     3 {  
     4 public:  
     5     Test(T1 i,T2 j):a(i),b(j){cout<<"模板类"<<endl;}  
     6 private:  
     7     T1 a;  
     8     T2 b;  
     9 };  
    10   
    11 template<>  
    12 class Test<int , char>  
    13 {  
    14 public:  
    15     Test(int i, char j):a(i),b(j){cout<<"全特化"<<endl;}  
    16 private:  
    17     int a;  
    18     char b;  
    19 };  
    20   
    21 template <typename T2>  
    22 class Test<char, T2>  
    23 {  
    24 public:  
    25     Test(char i, T2 j):a(i),b(j){cout<<"偏特化"<<endl;}  
    26 private:  
    27     char a;  
    28     T2 b;  
    29 };  

    函数:

     1 //模板函数  
     2 template<typename T1, typename T2>  
     3 void fun(T1 a , T2 b)  
     4 {  
     5     cout<<"模板函数"<<endl;  
     6 }  
     7   
     8 //全特化  
     9 template<>  
    10 void fun<int ,char >(int a, char b)  
    11 {  
    12     cout<<"全特化"<<endl;  
    13 }  
    14   
    15 //函数不存在偏特化:下面的代码是错误的  
    16 /* 
    17 template<typename T2> 
    18 void fun<char,T2>(char a, T2 b) 
    19 { 
    20     cout<<"偏特化"<<endl; 
    21 } 
    22 */  
  • 相关阅读:
    vue中的具名插槽
    vue中默认插槽slot
    局部组件使用指令-方法-过滤器-计算属性
    vue创建局部组件
    Class Metaprogramming
    Attribute Descriptors
    Dynamic Attributes and Properties
    Concurrency with asyncio
    Concurrency with Futures
    Coroutines
  • 原文地址:https://www.cnblogs.com/mrlsx/p/5862755.html
Copyright © 2011-2022 走看看