日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

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

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

1、針對(duì)每個(gè)不同的類型重復(fù)地編寫函數(shù)實(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*缺點(diǎn)有兩個(gè)效率問題方面也有問題類型檢查問題

3、使用宏預(yù)處理機(jī)制

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

優(yōu)點(diǎn):

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

 
 
 
  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)為某個(gè)函數(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)點(diǎn):由:全局特化->局部特化->基本C++模板,這種特化順序的選擇與匹配(重載解析規(guī)則)是由編譯器自動(dòng)進(jìn)行的,無需人工參與??梢愿鶕?jù)不同的情況(諸如類型不同,條件不同),給出不同的實(shí)現(xiàn),從而獲得更加靈活的針對(duì)性??梢葬槍?duì)任何變化,改善了程序的擴(kuò)展性。

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


網(wǎng)頁標(biāo)題:缺少了C++模板真的不行嗎
文章路徑:http://www.dlmjj.cn/article/djsjgdj.html