日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
缺少了C++模板真的不行嗎

首次進行C++的初始學習時,首先接觸到的就是C++模板,在創(chuàng)建C++模板時出現(xiàn)了一些困難和難以理解的地方,比如向上類型轉(zhuǎn)換,向下類型轉(zhuǎn)換等相關(guān)麻煩,對于除類型之外,其余都相同的函數(shù),我們一般有3種解決辦法。

1、針對每個不同的類型重復地編寫函數(shù)實體(C語言的做法):

 
 
 
  1. T const& f(T const& a, T const& b)
  2. {
  3. return a + b; //1處
  4. }
  5. int g = f(1,2);

2、使用Object(Java的做法)或者void*缺點有兩個效率問題方面也有問題類型檢查問題

3、使用宏預處理機制

缺點:只是愚蠢的文本替換,而且也不會考慮作用域和類型安全。然而,應用C++模板卻可以避免這些缺點,我們可以編寫:

優(yōu)點:

代碼簡潔優(yōu)雅,所有參數(shù)類型都以T來代替,真正實現(xiàn)了類型無關(guān)性。更好的類型安全性,所有的類型檢查都是在編譯期進行,而且避免使用指針。不存在繼承,效率高。(1)沒有虛函數(shù);(2)所有的一切工作都是在編譯期完成,大大提高運行效率。目的:告訴編譯器如何做出最佳的選擇,而且這種選擇全部是在編譯期完成的。C++模板的機制:特化 和 實參演繹

 
 
 
  1.  // traits/accumtraits3.hpp
  2. template
  3. lass AccumulationTraits;
  4. c template<>
  5. class AccumulationTraits {
  6. public:
  7. typedef int AccT;
  8. static AccT const zero = 0;
  9. };
  10. template<>
  11. class AccumulationTraits {
  12. public:
  13. typedef int AccT;
  14. static AccT const zero = 0;
  15. };
  16. template<>
  17. class AccumulationTraits {
  18. public:
  19. typedef long AccT;
  20. static AccT const zero = 0;
  21. };
  22. (2)policy:通常表現(xiàn)為某個函數(shù),指定的是一種行為
  23. class SumPolicy {
  24. public:
  25. template
  26. static void accumulate (T1& total, T2 const & value) {
  27. total += value;
  28. }
  29. };
  30. (3)trait和policy的用法:
  31. template >
  32. class Accum {
  33. public:
  34. typedef typename Traits::AccT AccT;
  35. static AccT accum (T const* beg, T const* end) {
  36. AccT total = Traits::zero();
  37. while (beg != end) {
  38. Policy::accumulate(total, *beg);
  39. ++beg;
  40. }
  41. return total;
  42. }
  43. };

優(yōu)點:由:全局特化->局部特化->基本C++模板,這種特化順序的選擇與匹配(重載解析規(guī)則)是由編譯器自動進行的,無需人工參與??梢愿鶕?jù)不同的情況(諸如類型不同,條件不同),給出不同的實現(xiàn),從而獲得更加靈活的針對性??梢葬槍θ魏巫兓纳屏顺绦虻臄U展性。

實參演繹
第1部分介紹了模板的基本概念,以教程的風格來介紹這些基本概念。第2部分闡述了模板的語言細節(jié),可以作為一本基于模板的構(gòu)造的參考手冊。第3部分介紹了C++模板所支持的基本設計技術(shù),范圍覆蓋從微小的概念一直延伸到復雜的用法;一些技術(shù)在別的書籍都沒有出現(xiàn)過。第4部分基于前兩部分,深入討論了各種使用C++模板的普通應用程序。


網(wǎng)頁標題:缺少了C++模板真的不行嗎
URL分享:http://m.5511xx.com/article/djsjgdj.html