C++非类型类模板参数的基本概念是什么
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,C++非类型类模板参数的基本概念是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C++编程语言已经出现就立即引起了开
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
花生壳把电脑当服务器
数据库为什么不能查询
联通服务器怎么玩
迅广网络技术有限公司电话
数据库系统新颖
品牌网络技术服务信息推荐
迟恩宇网络安全与防护说课
浅谈大学生网络安全问题论文
思科录播服务器tcs配置手册
怎样用JDBC访问数据库
黄赌毒网络安全图
按照人名汇总数据库
求生之路2找不到最佳服务器
计算机网络技术文档心得
关于网络安全证书有哪些
什么叫电信托管服务器
浪潮服务器管理口禁止访问
搜网络技术有限公司
在关系数据库中关系就是一张
sql 2018收缩数据库
上海高科技软件开发设计规范
网络安全应急预案的工作原则
日本文学 数据库
软件开发模型选择原则
80台网吧服务器
广州优易网络技术有限公司
人工智能网络安全算法模型
《网络安全要牢记》教案
网络技术应用实例
国际桥梁船撞事故数据库