C++非类型类模板参数的基本概念是什么
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,C++非类型类模板参数的基本概念是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C++编程语言已经出现就立即引起了开
千家信息网最后更新 2026年11月03日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++
面的
大小
数组
概念
代码
使用者
元素
内容
语言
帮助
支持
设计
清楚
人员
使用方法
例子
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
喔噻互联网科技有限公司
互联网科技网
互联网医疗科技
互联网 科技创新
融势互联网科技
有木互联网科技
互联网科技网站
天扬科技互联网广告
无锡溥仪互联网科技有限公司
贵州叶脉互联网科技有限公司所属行业
崇明区互联网教育科技诚信经营
宜昌元轩互联网科技有限公司
米聚互联网科技南京有限公司排面
洛阳共同富裕互联网科技有限公司
威龙国际互联网科技公司
世界互联网领先科技成果获奖
怎样加入科技互联网
广东鹅鹅鹅互联网科技有限公司
第三届互联网大会安防黑科技
瑞安市蟠桃会互联网科技有限公司
有格互联网科技
圆梦互联网科技
喔噻互联网科技
智网互联网科技
沃里互联网科技
多迪互联网科技有限公司
赶超互联网科技 微信多开
梅州GM互联网络科技有限公司
领航科技大厦互联网公司
富国互联网科技002692