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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C++非類型類模板參數(shù)基本概念正確理解

C++編程語言已經(jīng)出現(xiàn)就立即引起了開發(fā)人員的注意,它具有C語言的所用功能,并能支持許多程序設(shè)計(jì)風(fēng)格。我們今天要為大家介紹的則是C++非類型類模板參數(shù)的一些基本概念,讓大家對(duì)這方面的內(nèi)容有一個(gè)更加深入的了解。

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、正安ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的正安網(wǎng)站制作公司

我認(rèn)為C++非類型類模板參數(shù)相當(dāng)于一個(gè)全局常量的角色。書中舉了下面的例子來說明非類型的類模板。這一章通過重新定義一個(gè)Stack模板,要求使用一個(gè)固定大小的數(shù)組作為元素的容器,并且數(shù)組的大小可以由模板的使用者自己定義。那么,對(duì)于模板的設(shè)計(jì)者,就應(yīng)該提供一個(gè)接口使得使用者可以定義數(shù)組的大小。這就需要用到非類型的類模板參數(shù)。下面的代碼能很好的解釋這個(gè)問題:

 
 
 
  1. #include < iostream>
  2. #include < string>
  3. #include < cstdlib>
  4. #include < stdexcept>
  5. template< typename T, int MAXSIZE>
  6. class Stack{
  7. private:
  8. T elems[MAXSIZE];
  9. int numElems;
  10. public:
  11. Stack();
  12. void push(T const&);
  13. void pop();
  14. T top() const;
  15. bool isEmpty() const{
  16. return numElems == 0;
  17. }
  18. bool isFull() const{
  19. return numElems == MAXSIZE;
  20. }
  21. };
  22. template< typename T, int MAXSIZE>
  23. Stack< T, MAXSIZE>::Stack():numElems(0)
  24. {
  25. // 不作任何事,僅為了初始化numElems。
  26. }
  27. template< typename T, int MAXSIZE>
  28. void Stack< T, MAXSIZE>::push(T const& elem)
  29. {
  30. if(numElems == MAXSIZE)
  31. {
  32. throw std::out_of_range("Stack< >::push()==>stack is full.");
  33. }
  34. elems[numElems] = elem;
  35. ++numElems;
  36. }
  37. template< typename T, int MAXSIZE>
  38. void Stack< T, MAXSIZE>::pop()
  39. {
  40. 47 if(numElems < = 0)
  41. {
  42. throw std::out_of_range("Stack< >::pop: empty stack");
  43. }
  44. --numElems;
  45. }
  46. template< typename T, int MAXSIZE>
  47. T Stack< T, MAXSIZE>::top()const
  48. {
  49. if(numElems)
  50. {
  51. throw std::out_of_range("Stack< >::pop: empty stack");
  52. }
  53. // 返回***一個(gè)元素。
  54. return elems[numElems - 1];
  55. }
  56. int main()
  57. {
  58. try
  59. {
  60. Stack< int, 20> int20Stack;
  61. Stack< int, 40> int40Stack;
  62. Stack< std::string, 40> stringStack;
  63. int20Stack.push(7);
  64. std::cout< < "int20Stack.top() : "< < int20Stack.top()< < std::endl;
  65. int20Stack.pop();
  66. stringStack.push("HelloWorld!");
  67. std::cout< < "stringStack.top() : "< < stringStack.top()< < std::endl;
  68. stringStack.pop();
  69. stringStack.pop();
  70. }
  71. catch(std::exception const& ex)
  72. {
  73. std::cerr< < "Exception: "< < ex.what()< < std::endl;
  74. return EXIT_FAILURE;
  75. }
  76. return 0;
  77. }

上面的代碼揭示了C++非類型類模板參數(shù)的定義和使用方法。


文章題目:C++非類型類模板參數(shù)基本概念正確理解
URL鏈接:http://www.dlmjj.cn/article/cdgddpp.html