程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++中類模板的部分定制和定制成員

C++中類模板的部分定制和定制成員

編輯:關於C++

類模板的部分定制, 是指使用類模板的類型(T), 但是不同種類, 如左值, 右值等;

類模板的部分定制, 和類模板定制相同, 都需要類名相同,參數相同;

定制的形參(parameter)比原始模板(original template)更加匹配;

類模板有部分定制, 但函數模板沒有, 函數模板只能是重載;

類模板的定制成員, 類模板可以單獨定制成員類型, 使不同的實例化類, 使用定制的成員;

代碼(部分定制):

/* 
 * CppPrimer.cpp 
 * 
 *  Created on: 2013.12.9 
 *      Author: Caroline 
 */
      
/*eclipse cdt, gcc 4.8.1*/
      
#include <iostream>  
#include <vector>  
#include <cstring>  
      
using namespace std;  
      
template<typename T>  
struct myclass{  
    void print() { std::cout << "myclass!" << std::endl; }  
};  
      
//類的部分定制, 左值  
template<typename T>  
struct myclass<T&>{  
    void print() { std::cout << "myclass! lvalue" << std::endl; }  
};  
      
//右值  
template<typename T>  
struct myclass<T&&>{  
    void print() { std::cout << "myclass! rvalue" << std::endl; }  
};  
      
int main(void)  
{  
    int i(1988);  
    int& ri = i;  
    myclass<decltype(1988)> mc; //原始版本  
    mc.print();  
      
    myclass<decltype(ri)> mcl; //左值版本  
    mcl.print();  
      
    myclass<decltype(std::move(i))> mcr; //右值版本  
    mcr.print();  
      
    return 0;  
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved