尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
我的C++模板的学习总结
模板总结文章目录模板总结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
RELATED

相关推荐

5G NR通感一体化ISAC系统级模拟器设计:从OFDM波形到距离多普勒处理

5G NR通感一体化ISAC系统级模拟器设计:从OFDM波形到距离多普勒处理

简介:基于5G NR的通信感知一体化(ISAC)系统级模拟器源码工程,面向通信工程、电子信息、人工智能等专业的本科毕业设计或课程设计场景,以Matlab仿真实例完整演示5G新空口框架下的综合传感与通信联合仿真流程与数据分析方…

📅 2026/9/25 18:06:45
数据可视化库 Observable Plot 源码深度解析——10 Plot 如何站在 D3 肩膀上

数据可视化库 Observable Plot 源码深度解析——10 Plot 如何站在 D3 肩膀上

第 10 章 Plot 如何站在 D3 肩膀上数据可视化库 Observable Plot 的官方定位是 “a D3-based library”。这句话很容易被误读成两种极端:要么以为它"只是 D3 的语法糖",要么以为它"和 D3 没什么关系"。 本章用实测数据把这两种印象…

📅 2026/9/25 18:06:45
Agent重写了整个页面,到底改了什么?lavish-axi修订图例实战指南

Agent重写了整个页面,到底改了什么?lavish-axi修订图例实战指南

Agent重写了整个页面,到底改了什么?lavish-axi修订图例实战指南 【免费下载链接】lavish-axi HTML is the new markdown. Lavish is the new editor for your HTML artifacts. 项目地址: https://gitcode.com/gh_mirrors/la/lavish-axi lavish-ax…

📅 2026/9/25 18:06:45
MORE NEWS

更多资讯

📰

企业多模型统一管理:服务目录、授权、路由与计量的六步方法

摘要:本文解释多模型统一管理的对象与边界,区分统一 API 和完整治理体系,并给出从模型盘点、服务标准到授权、路由和运营计量的六步实施方法。多模型统一管理,是把公有模型、私有模型、自建模型和本地部署模型组织为标准服务对象&…

📰

G Hub宏失效的解决方法

都是用了5年了的罗技老用户了,虽然lgHub挺好用的,但是还是偶尔会出现一些小问题。比如找不到 lg设备,设备自定义宏失效,自启动失效,lgHub卡在加载动画进不去的问题。这里只说鼠标宏无法触发,常见原因多源于…

📰

解决calibre阅读器无法正确获取锚点元素的href属性问题

在创建支持交叉链接且鼠标悬停显示注释框的HTML文件 一文中提供了一个js脚本,通过读取锚点元素的href目标的文本内容向伪元素传递注释内容,但是那个脚本如果制作成EPUB并在Calibre阅读器中打开却会失效(在Thorium阅读器中有效)&am…

📰

OrcaSlicer 切片安装配置手册

目录 耗材预设文件 bambustudio导出命令: 20个切片工具 bambustudio 切片 orca-slicer介绍: orca-slicer下载: 编译: linux安装: 缩放: 自动切片: 导出预设包,打印机预设…

📰

Codex 与 CC Switch 配置保姆教程

资源文件:通过网盘分享的文件: 链接 : https://pan.baidu.com/s/1Mp9nIswOat58X33clpjEkg 提取码: va8u 复制这段内容后打开百度网盘手机App,操作更方便哦一、Codex 安装指南方式一:官方下载(推荐)访问open…

📰

Go Workflow 引擎:从 Tempor 与 Cadence 到流程编排

Go Workflow 引擎:从 Tempor 与 Cadence 到流程编排工作流引擎是后端组件的"粘合层"。Tempor / Cadence 是 Go 编写的开源流程编排引擎。本文讲清原理与集成。一、Temporal 是什么? Temporal 微服务编排 时间调度 容错。Google Uber 支持。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬