模板总结文章目录模板总结1.形式注意点函数模板类模板2.实例化与使用注意点函数模板1.隐式实例化直接使用2.显示实例化类模板3.非类型模板参数常量作为模板参数注意点形式4.特化注意点分类1.全特化2.偏特化5.不支持分离编译6.题目1231.形式注意点class和typename可以混用函数模板类模板最开始加上了templateclass T1, class T2, ..., class Tn类内声明类外定义的函数开头也要加上templateclass T1, class T2, ..., class Tn并且要加上类域StackT::2.实例化与使用注意点函数模板可以和普通函数同名如果能直接用普通函数就不会使用函数模板来实例化除非强制显示实例化普通函数不合适的时候再用函数模板函数模板不允许自动类型转换如果函数模板里面只有一个class T那这时候传的两个参数必须是同一个类型的如果是不同的话函数模板应该是class T1,class T2但普通函数可以实例化后的结果才是真正的函数或者类函数模板1.隐式实例化直接使用inta110,a220;doubled110.0,d220.0;Add(a1,a2);Add(d1,d2);2.显示实例化Addint(a,b);类模板Stackintst1;3.非类型模板参数常量作为模板参数注意点只有整形可以可以只有数不赋值size_t N而N的值没定可以只有一个非类型模板参数没有其他的模板参数templatesize_t N变量不可以即使是整型变量(int x299) 都不可以因为它必须在编译期就确认一个数字形式namespacelcj{templateclassT,size_t N10classarray{T _array[N];};}intmain(){lcj::arrayint,5a;// 把 N 指定为 5这个对象占 5 个 intlcj::arrayint,100b;// 把 N 指定为 100这个对象占 100 个 intlcj::arraydoublec;// 不写就用默认的 10相当于 double _array[10];}4.特化注意点必须有一个基础的模板函数函数名后加上尖括号尖括号中是特化的类型函数形参表必须要和模板函数的基础类型完全相同分类1.全特化templateboolLessDate*(Date*left,Date*right){return*left*right;}templateclassDataint,char{public:Data(){coutDataint, charendl;}private:int_d1;char_d2;};2.偏特化// 将第二个参数特化为inttemplateclassT1classDataT1,int{public:Data(){coutDataT1, intendl;}private:T1 _d1;int_d2;};//两个参数偏特化为指针类型templatetypenameT1,typenameT2classDataT1*,T2*{public:Data(){coutDataT1*, T2*endl;}private:T1 _d1;T2 _d2;};//两个参数偏特化为引用类型templatetypenameT1,typenameT2classDataT1,T2{public:Data(constT1d1,constT2d2):_d1(d1),_d2(d2){coutDataT1, T2endl;}private:constT1_d1;constT2_d2;};5.不支持分离编译模板不支持分离编译所以不能在.h声明在.cpp实现一般只能放在一个文件里6.题目1下列的模板声明中其中几个是正确的 1)template2)templateT1,T23)templateclass T1,T24)templateclass T1,class T25)templatetypename T1,T26)templatetypename T1,typename T27)templateclass T1,typename T28)typename T1,class T29)templatetypename T1, typename T2, size_t N10)templatetypename T, size_t N100, class _Aalloc11)templatesize_t N正确的定义为4 6 7 9 10 11一共6个故答案为D2以下程序运行结果正确的是( )templateType Max(const Type a, const Type b){ cout“This is Max”endl; return a b ? a : b;}templateint Max(const int a, const int b){ cout“This is Max”endl; return a b ? a : b;}templatechar Max(const char a, const char b){ cout“This is Max”endl; return a b ? a : b;}int Max(const int a, const int b){ cout“This is Max”endl; return a b ? a : b;}int main(){ Max(10,20); Max(12.34,23.45); Max(‘A’,‘B’); Max(20,30); return 0;}A.This is Max This is Max This is Max This is MaxB.This is Max This is Max This is Max This is MaxC.This is Max This is Max This is Max This is MaxD.This is Max This is Max This is Max This is Max答案为: A3以下程序运行结果正确的是( )templateclass T1, class T2class Data{public:Data() { cout “DataT1, T2” endl; }private:T1 _d1;T2 _d2;};templateclass DataT1, int{public:Data() { cout “DataT1, int” endl; }private:T1 _d1;int _d2;};template typename T1, typename T2class Data T1**,T2**{public:Data() { cout “DataT1**, T2**” endl; }private:T1 _d1;T2 _d2;};template typename T1, typename T2class Data T1, T2{public:Data(const T1 d1, const T2 d2)_d1(d1), _d2(d2){cout “DataT1, T2” endl;}private:const T1 _d1;const T2 _d2;};int main(){Datadouble, int d1;Dataint, double d2;Dataint, int d3;Dataint, int d4(1, 2);return 0;}A.DataT1, T2 DataT1, int DataT1*, T2* DataT1, T2B.DataT1, int DataT1, T2 DataT1, T2 DataT1*, T2*C.DataT1, int DataT1, T2 DataT1*, T2* DataT1, T2D.DataT1, T2 DataT1, T2 DataT1*, T2* DataT1, T2答案为: C
企业数字化 ERP 产品动态
相关推荐
毕业论文word排版之公式自动化编号及交叉引用 目录 1. 总体需求
2. 软件环境
3. 插入公式
3.1 开始新的章编号
3.2 插入编号
3.3 公式居中,公式编号右对齐
3.3.1 新建“公式”样式
3.3.2 对齐公式
4. 引用公式
5. 刷新公式编号 1. 总体需求 目标:公式居中,公式编号右对齐&#x… · 2026/9/25 18:11:38
AI自动化工程系统提示词:从零搭建到实战落地 1. 从零理解AI自动化工程系统提示词到底在解决什么问题很多人第一次听到“AI自动化工程系统提示词”这个词,脑子里浮现的可能是某个具体的工具或者某个开源项目。实际上它不是一个软件,也不是某个现成的框架,而是一套用提示词驱动AI完成工程化… · 2026/9/25 18:11:32
OpenCode+Harness:AI数据分析全流程实操指南 最近在折腾 OpenCode 和 Harness 这套组合,把一条数据分析全流程真正跑通之后,我忍不住想把它整理成一篇实操笔记。标题里的“OpenCode”指的是那个跑在终端里的 AI 编程代码智能体,“Harness”指的是负责编排和调度智能体运行的框架… · 2026/9/25 18:11:26
Atlas 300V 24G推理加速卡上部署YOLO模型全流程解析 “atlas部署yolo”和“atlas 300v 24g 是运算加速卡吗”——这两类问题最近被问得特别密集。一边是大家都在做边缘侧目标检测,手里攒着现成的YOLO模型,想在便宜、低功耗的AI加速卡上跑起来;另一边是华为昇腾的Atlas产品线型号复杂,… · 2026/9/25 18:52:32
DMR数字对讲机组网实战:50人工地选型、信道规划与中继部署实用指南 本文基于建筑施工现场通信部署经验,从DMR制式原理、信道规划、中继部署到场测验收,讲解中型场景下无线对讲系统的技术落地方法。适合读者:通信集成商、IT运维、项目技术负责人。目录
现场通信的常见问题需求分析:人员架构与环境特… · 2026/9/25 18:52:26
机器人跨区域运行梯控设计:地下车库到大堂任务连续性分析 摘要: 机器人从地下车库进入大堂等跨区域场景时,需要面对不同网络环境、设备状态和任务流程变化。梯控系统需要保证机器人任务连续,避免区域切换造成运行中断。导语: 单一区域机器人应用通常只需要解决移动和导航问题,… · 2026/9/25 18:52:20
IronClaw Decision Capture 技能实战:在 Agent 会话中自动检测、持久化与追踪决策 人工智能AI 应用交互助手AI Agent 【免费下载链接】ironclaw IronClaw is an Agent OS focused on privacy, security and extensibility 项目地址: https://gitcode.com/gh_mirrors/iro/ironclaw 点击查看 免费下载 IronClaw 的 decision-capture 技能是一套面向 … · 2026/9/25 18:52:08
内蒙古口碑好的大口径铁箍纸桶联系方式生产厂家避坑挑选指南 内蒙古口碑好的大口径铁箍纸桶生产厂家避坑挑选指南辽阳市万兴包装制品厂是深耕纸包装行业三十年的源头生产厂家,主营高强度环保铁箍纸桶,可提供定制化包装解决方案,兼顾出口级品质与高性价比,适配化工、医药等行业的存储运输及出… · 2026/9/25 18:52:02
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37