国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C++類模板特化基本概念概述

開發 后端
C++類模板特化的一些相關操作基本上都是在類名后進行的。我們將特化的步驟分為全局特化與局部特化這兩種。下面將對其進行詳細介紹。

我們在上一篇文章中為大家詳細介紹了C++類模板的具體應用方式,相比朋友們應該可以從中對類模板有一個充份的認識。那么C++類模板特化又是如何進行的呢?其實,C++類模板特化被描述為一個和重載類似的概念。

我的理解是,特化允許我們對某些特殊的參數(這里就是類型)進行特殊的處理。C++類模板特化的處理都是在類名后面做文章的。特化分為全局特化和局部特化。對于全局特化,書中的例子是希望對于Stack< T>模板,如果參數為std::string的類型,就用deque作為容器來處理,而其他的保持不變。因此,我們需要對Stack< T>模板作std::string的特化處理。代碼如下:

 

  1. #include < deque> 
  2. #include < string> 
  3. #include < stdexcept> 
  4. #include "Stack.h"  
  5. template< > 
  6. class Stack< std::string>{  
  7. private:  
  8. std::deque< std::string> elems;  
  9. public:  
  10. void push(std::string const&);  
  11. void pop();  
  12. std::string top() const;  
  13. bool empty() const{  
  14. return elems.empty();  
  15. }  
  16. };  
  17. void Stack< std::string>::push(std::string const& elem)  
  18. {  
  19. elems.push_back(elem);  
  20. }  
  21. void Stack< std::string>::pop()  
  22. {  
  23. if(elems.empty())  
  24. {  
  25. throw std::out_of_range("Stack< std::string>::pop()==> empty stack.");  
  26. }  
  27. elems.pop_back();  
  28. }  
  29. std::string Stack< std::string>::top() const  
  30. {  
  31. if(elems.empty())  
  32. {  
  33. throw std::out_of_range("Stack< std::string>::pop()==> empty stack.");  
  34. }  
  35. return elems.back();  

注意到C++類模板特化的定義和普通的類模板完全不一樣了。主要區別有:#t#

特化類模板的前面加上了template< >,沒有指定參數。而是在類名后面指定了類型參數。

在函數的定義里面,原來的類型T全部換成了特化的類型std::string。實際上,完全可以根據特殊需要重寫成員函數。甚至可以定義另外的函數。

將上面的源代碼加入到工程中,編譯運行。就會發現當使用std::string去實例化stack的時候實際上調用的是StringStack文件中的"重載"版本。各個方法的調用也一樣。也就是說,特化實際上是要求對特定的參數施行特殊的處理。從這個方面來說和重載確實很類似。

但是,我認為特征化和重載還是有區別的。試想有一個函數Func(int, int),另外一個函數對它進行重載為Func(string, string)。在實際上我們也可以說int的Func重載了string的Func,這是相互的。但是特化卻不能這么說。因為特化是對某種類型的特殊處理,我們可以說特化模板重載了某個模板,但是不能說某個模板重載了特化的模板。這是單方向的。另外,如果,我們不需要Func(int, int)函數,我們完全可以把它刪去。但是C++類模板特化不能離開它依賴的類模板單獨存在。在上面的例子中,如果刪除Stack.h文件,StringStack.h文件的定義就會出錯。

StringStack是Stack模板的特化。但是他們之間的聯系其實不是那么緊密,除了名字上以外。例如,Stack模板中的成員函數不必非得在StringStack中出現;同理,StringStack中的函數也不必是Stack中的函數。也就是說,特化的模板類可以根據自己的需要完全重寫指定的模板函數,也可以棄原來模板函數中的成員不用,另外定義成員函數。這方面沒有限制。

在理解了全局的特化以后,在來看局部的特化就很容易明白了。局部特化是要求在指定的條件下使用指定的類模板的重載版本。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-02-02 13:41:01

C++類繼承

2010-02-05 17:34:37

C++函數模板

2010-02-04 17:39:48

C++字符串類型

2010-02-06 15:58:10

C++集合初始化

2010-02-04 14:01:43

C++非類型類模板參數

2010-02-02 10:33:22

C++引用

2010-02-03 13:22:07

C++時間

2010-02-05 12:57:20

C++ kdevelo

2010-02-03 11:11:18

C++類型轉換

2010-02-02 15:30:05

C++ include

2010-02-01 17:24:41

C++循環語句

2010-02-03 14:36:47

C++仿函數

2022-01-17 10:12:47

C++‘模板元編程

2010-02-06 14:04:58

C++內存使用機制

2010-02-04 10:08:00

C++靜態成員函數

2010-02-01 14:07:12

C++多態性

2010-02-04 17:32:43

C++中C風格字符串

2010-02-02 10:07:59

C++全局函數

2011-03-28 11:05:17

ODBC

2017-03-27 20:42:17

遷移學習人工智能機器學習
點贊
收藏

51CTO技術棧公眾號

黄色一级在线视频| 国产白丝网站精品污在线入口| 天天操天天爱天天爽| 欧美另类暴力丝袜| 久久久国产午夜精品| 国产精品天天看天天狠| 欧美日韩亚洲一二三| 91国产精品电影| 亚洲国产精品久久不卡毛片 | 日本乱码高清不卡字幕| 日韩理论在线| 97人人在线| 日韩国产精品一区二区| 亚洲国产精品电影| 97精品久久久久中文字幕| 成人av资源网址| 一区二区三区不卡在线视频 | 日本一卡二卡四卡精品| 国产精品乱码视频| 欧美成人精品3d动漫h| 国产一区二区三区香蕉| 亚洲最大的免费视频网站| 国产一区二区在线免费播放| 国产精品久久在线观看| 欧美日韩久久不卡| 国产一区二区美女诱惑| 99国产精品免费网站| 日产精品久久久久久久性色| 亚洲一区二区三区精品视频| 久久好看免费视频| 亚洲免费av高清| 日韩网站在线| 自拍偷自拍亚洲精品被多人伦好爽 | 大荫蒂性生交片| 97精品久久久中文字幕免费| 一本大道av一区二区在线播放| 免费亚洲视频| 日韩妆和欧美的一区二区| 在线观看国产精品91| 一区二区三区四区在线播放| 午夜在线一区| 在线视频亚洲欧美中文| 国产黄色在线播放| 国产精品久久..4399| 国产91精品网站| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品久久久久91| 91麻豆精品国产91久久久久久久久| 国产精一品亚洲二区在线视频| 激情av综合| 精品麻豆一区二区三区| 日韩一级在线免费观看| 超碰97国产在线| 久久亚洲欧美日韩精品专区| 色婷婷综合久久久中文字幕| www.日韩精品| 激情综合自拍| 精品999日本久久久影院| 成人欧美亚洲| 91香蕉视频污版| 久久99导航| 欧美国产亚洲视频| 欧美一区二区播放| 中文字幕亚洲区| 蜜桃视频一区二区三区在线观看| 猫咪成人在线观看| 久久久久久久久久久一区| 久久国产精品久久国产精品| 欧美欧美午夜aⅴ在线观看| 久久精品一区二区三区不卡| 午夜亚洲视频| 蜜臀av一区| 天堂av中文在线观看| 三级理论午夜在线观看| 亚洲午夜无码av毛片久久| 久久精品国产精品国产精品污 | 超鹏97在线| 成人eeuss影院在线观看| 天天人人精品| 91精品在线观看视频| 久久国产一区二区三区| 欧美精品电影在线播放| 亚洲女人的天堂| 99久久免费精品| 日韩国产成人精品| 中文乱码免费一区二区三区下载| 日韩欧美中文在线观看| 国模私拍一区二区国模曼安| 国产在线自天天| 国产精品视频一区二区图片| 青青青免费在线| 亚洲毛片aa| 国产精品一区二区欧美| 久久欧美中文字幕| 麻豆精品国产传媒mv男同| 狠狠综合久久| 99精品视频在线观看免费播放 | 成人小视频在线看| 在线视频不卡国产| 国产一区二区视频在线免费观看| 国产91在线播放| 久久国产精品免费视频| 亚洲精品视频免费| 日韩一区二区电影| 在线视频一区二区三区| 亚洲一区在线观看免费 | 在线日韩精品视频| 日韩一区二区精品| 在线看日本不卡| 亚洲777理论| 国产精品久久久久影院老司| 不卡的av在线播放| 国产在线一区二区| 看电视剧不卡顿的网站| 午夜亚洲福利在线老司机| 亚洲国产一区二区精品专区| 天天影视欧美综合在线观看| 欧美日韩播放| 伦理一区二区| 欧美日本三级| 精品国模一区二区三区欧美| 欧美亚洲二区| 成人1区2区| 台湾佬中文娱乐久久久| 成年女人在线看片| 久久成人资源| 成人欧美一区二区| 成人h在线播放| 亚洲字幕一区二区| 国产日韩欧美视频在线| 国产精品免费在线免费| 国产精品福利网站| 国产精品美乳一区二区免费| 国产精品影院在线观看| 91探花福利精品国产自产在线| 99国产在线观看| 精品一区二区国产| 视频在线99| 老汉色影院首页| av在线免费观看国产| 日本韩国欧美在线观看| av动漫免费看| 午夜伦伦电影理论片费看| 超碰超碰97| 小小水蜜桃在线观看| 阿v免费在线观看| 超碰最新在线| 自拍偷拍亚洲视频| 欧美天堂在线| 秋霞综合在线视频| 羞羞答答成人影院www| 影音先锋久久久| 美女www一区二区| 成人精品视频一区二区三区| 91美女片黄在线观看| 国产精品福利一区| 亚洲va欧美va国产va天堂影院| 欧美日韩国产精品成人| 亚洲精品aⅴ中文字幕乱码| 中文字幕日韩欧美在线| 69av在线播放| 51精品国产人成在线观看| 免费精品视频一区二区三区| 蜜臀av性久久久久蜜臀av| 国产小视频91| 久久国产精品久久久| 国产精品99久久久久久白浆小说| 亚洲xxx自由成熟| 亚洲精品一区二| 国产精彩免费视频| 在线播放免费| missav|免费高清av在线看| 伊人久久综合网另类网站| 欧洲激情视频| 日韩电影在线观看电影| 92国产精品观看| 天天影视色香欲综合网老头| 日韩一卡二卡三卡国产欧美| 中日韩午夜理伦电影免费 | 日韩av在线第一页| 免费在线黄色av| caoporm免费视频在线| 巨胸喷奶水www久久久| 亚洲另类av| 伊人成年综合电影网| 国产成人一级电影| 亚洲黄色片在线观看| 日韩欧美中文字幕制服| 毛片精品免费在线观看| 国产日产亚洲精品| 青青草原网站在线观看| jizz蜜桃视频在线观看| 成人av福利| 国产在线播放精品| 国产精品久久久一区二区| 91麻豆精东视频| 欧美亚洲动漫另类| 日韩一区二区av| 国产激情美女久久久久久吹潮| 久久精品无码中文字幕|