快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

C++非类型类模板参数的基本概念是什么

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++非类型类模板参数的定义和使用方法。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


分享文章:C++非类型类模板参数的基本概念是什么
分享链接:http://6mz.cn/article/jcsgih.html

其他资讯