C++非类型类模板参数的基本概念是什么
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,C++非类型类模板参数的基本概念是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C++编程语言已经出现就立即引起了开
千家信息网最后更新 2024年11月14日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安全错误
数据库的锁怎样保障安全
绝地求生掉线重连服务器繁忙
网络安全坏处20字
郏县软件开发有限公司
网络技术国之重器
戴尔服务器启动时硬盘没反应
护苗网络安全课视频下载
linux运维监控服务器
软件开发毕业论文参考文献
图木舒克网络安全工程师工程师
网络安全目标管理
陕西软件开发大学排名
游戏软件开发算什么专业
惠普服务器主板图片
戴尔r610服务器几时生产的
网络管理员课程服务器
饭店数据库设计
文件表格数据库java
绿盟网络安全审计系统参数
足球博彩软件开发
软件开发管理的内容
上铁软件开发岗女生
专业的软件开发中心
网络安全措施防范
数据库管理系统安全结束语
mysql数据库备份物理
黄山市网络安全法培训会
网页设计将图片上传到服务器
尚学堂网络安全
流数据库是什么东西
西部数码ftp服务器