溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++非類型類模板參數的基本概念是什么

發布時間:2021-10-27 18:53:08 來源:億速云 閱讀:203 作者:柒染 欄目:編程語言

C++非類型類模板參數的基本概念是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

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

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

#include < iostream> #include < string> #include < cstdlib> #include < stdexcept> template< typename T, int MAXSIZE> class Stack{  private:  T elems[MAXSIZE];  int numElems;  public:  Stack();  void push(T const&);  void pop();  T top() const;  bool isEmpty() const{  return numElems == 0;  }  bool isFull() const{  return numElems == MAXSIZE;  }  };  template< typename T, int MAXSIZE> Stack< T, MAXSIZE>::Stack():numElems(0)  {  // 不作任何事,僅為了初始化numElems。  }  template< typename T, int MAXSIZE> void Stack< T, MAXSIZE>::push(T const& elem)  {  if(numElems == MAXSIZE)  {  throw std::out_of_range("Stack< >::push()==>stack is full.");  }  elems[numElems] = elem;  ++numElems;  }  template< typename T, int MAXSIZE> void Stack< T, MAXSIZE>::pop()  {  47 if(numElems < = 0)  {  throw std::out_of_range("Stack< >::pop: empty stack");  }  --numElems;  }  template< typename T, int MAXSIZE> T Stack< T, MAXSIZE>::top()const  {  if(numElems)  {  throw std::out_of_range("Stack< >::pop: empty stack");  }  // 返回***一個元素。  return elems[numElems - 1];  }  int main()  {  try  {  Stack< int, 20> int20Stack;  Stack< int, 40> int40Stack;  Stack< std::string, 40> stringStack;  int20Stack.push(7);  std::cout< < "int20Stack.top() : "< < int20Stack.top()< < std::endl;  int20Stack.pop();  stringStack.push("HelloWorld!");  std::cout< < "stringStack.top() : "< < stringStack.top()< < std::endl;  stringStack.pop();  stringStack.pop();  }  catch(std::exception const& ex)  {  std::cerr< < "Exception: "< < ex.what()< < std::endl;  return EXIT_FAILURE;  }  return 0;  }

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

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女