【和春笋一起学C++】(七十三)类模板的其他特性
目录1 递归使用模板2 多个类型参数的模板3 默认类型模板参数本文学习类模板的其他一些特性。在使用类模板时可以将常规类的技术用于模板类即模板类可以用作基类也可以用作组件类还可以作为其他模板的类型参数。1 递归使用模板例如对于上篇文章《类模板》中的数组模板可以定义这样一个对象ArrayTPArrayTPdouble, 5, 10ar3;ar3是一个包含10个元素的数组其中每个元素都是一个包含5个double元素的数组。与它等价的常规数组声明如下double ar3[10][5];这里请注意在模板句法中维的顺序与等价的二维数组相反。2 多个类型参数的模板模板可以包含多个类型参数C标准模板库中的pair模板就使用了两个类型参数。以下为有两个类型参数的模板类示例代码#pragma once #include iostream #include string template class T1, class T2 class Mypair { private: T1 a; T2 b; public: T1 first(); T2 second(); T1 first() const { return a; } T2 second() const { return b; } Mypair(const T1 a_val, const T2 b_val) :a(a_val), b(b_val) {} Mypair() {}; }; template class T1, class T2 T1 MypairT1, T2::first() { return a; } template class T1, class T2 T2 MypairT1, T2::second() { return b; }类模板说明方法first() const和second() const用于输出存储的值且这两个方法返回的是Pair数据成员的引用因此可以通过赋值重新设置被存储的值。下面的程序为使用类模板的调用程序#include iostream #include string #include Pair.h int main() { Mypairstring, intratings[5] { Mypairstring, int(Liiy, 1), Mypairstring, int(Jack, 2), Mypairstring, int(Tom,3), Mypairstring, int(Andy,4), Mypairstring, int(Lucy,5) }; int joints sizeof(ratings) / sizeof(Mypairstring, int); cout name: \t test result\n; for (int i 0; i joints; i) { cout ratings[i].first() : \t ratings[i].second() endl; } ratings[3].second() 2; cout ratings[3].first() : \t ratings[3].second() endl; return 0; }调用程序说明main()函数中必须使用Mypairstring, int来调用构造函数并将它作为sizeof的参数。这是因为模板类的名称是Mypairstring, int不是Mypair。因此程序创建的是一个有5个Mypairstring, int对象的数组数组名为ratings。另外需要说明的是Mypairchar*, int与Mypairstring, int 是两个不同的模板类。下图为程序的输出结果3 默认类型模板参数可以为类模板中的类型参数提供默认值。比如Mypair类模板可以这样创建template class T1, class T2 int class Mypair { ... };如果省略T2的值编译器将使用int替代。Mypairstring, doublest1;///T1值为string, T2值为double Mypairstringst2;///T1值为string, T2值为int

相关新闻

一键切换工作区,不用关窗口也不用重开Trae

一键切换工作区,不用关窗口也不用重开Trae

我经常同时开着三四个Trae项目。之前切换的时候挺麻烦的:关当前窗口,去文件夹里找另一个项目,再用Trae打开。开多个Trae窗口并行也试过,但占内存不说,任务栏一排图标看了头疼。 后来才发现,Trae顶端那个显示…

2026/10/17 6:44:59 阅读更多 →
Ionic 头部与底部:Header 与 Footer 组件实战详解

Ionic 头部与底部:Header 与 Footer 组件实战详解

1. 引言在移动端应用开发中,页面顶部和底部的固定区域是承载导航、标题、操作按钮等核心功能的重要部分。Ionic 框架提供了 Header(头部) 和 Footer(底部) 两个基础组件,帮助开发者快速搭建结构清晰、体验一…

2026/10/17 6:44:59 阅读更多 →
02 AI 协作工作流:需求 → 拆解 → 交付

02 AI 协作工作流:需求 → 拆解 → 交付

02 AI 协作工作流:需求 → 拆解 → 交付本章解决一个问题:怎么和 AI 协作才不翻车。 它是一套通用方法论,不绑定任何具体工具(Codex、DeepSeek Harness、Cursor、Claude Code 等均适用),因为翻车的原因从来…

2026/10/17 6:44:59 阅读更多 →

最新新闻

IDA逆向工程实战:从静态分析到二进制补丁的完整流程

IDA逆向工程实战:从静态分析到二进制补丁的完整流程

干逆向这一行的,绕不开IDA。不管是分析一个陌生二进制文件到底干了什么、给某个老程序打补丁,还是解CTF里的Reverse题,IDA几乎都是所有人默认打开的第一件工具。它最核心的价值就是把机器码翻译成人类能读的伪代码和汇编,同时把整…

2026/10/17 7:18:06 阅读更多 →
MySQL数据库与表管理实战:从建库建表到字符集与DDL避坑指南

MySQL数据库与表管理实战:从建库建表到字符集与DDL避坑指南

数据库管理这事,入门容易,想管得明白、少在晚上被电话叫醒,靠的全是细节。MySQL作为使用面最广的开源关系型数据库之一,大家对它的印象往往是“装完就能用”,可真到了建库建表、调整表结构、处理字符集乱码、删错数据的…

2026/10/17 7:18:06 阅读更多 →
数据加密如何重塑仓储管理系统:字段级加密、密钥与查询设计

数据加密如何重塑仓储管理系统:字段级加密、密钥与查询设计

做仓储管理系统,大家第一反应就是把入库、出库、库存台账、盘点这些业务功能铺开,最后再在功能树上挂一个“数据加密”就算交差。但这份“基于数据加密的仓库货物管理系统设计与实现任务书”的落脚点,恰恰不在“仓库货物管理”这六个字&#…

2026/10/17 7:18:06 阅读更多 →
5款AI编程神器横评:从补全到自动Debug

5款AI编程神器横评:从补全到自动Debug

2026年还没过半,AI编程工具的洗牌速度已经让不少人看花了眼。前两年大家还在为一款编辑器疯狂买单,那场面我至今记得——好像装上它,代码就能自己写完。如今再回头看,那句话不算全错,只是说得太早了。因为它擅长的本来…

2026/10/17 7:18:06 阅读更多 →
MySQL 8.0 CTE实战:从嵌套子查询到清晰报表的SQL重构指南

MySQL 8.0 CTE实战:从嵌套子查询到清晰报表的SQL重构指南

最近在做一批历史报表SQL的梳理,遇到一个印象很深的查询:统计各区域销售Top 10产品,源数据就三张表,写出来的SQL却有将近三百行,光子查询嵌套就有七层。不是说跑不动,而是后来同事想在这个基础上加一个过滤…

2026/10/17 7:18:06 阅读更多 →
鸿蒙应用运行机制详解:从点击图标到第一帧画面

鸿蒙应用运行机制详解:从点击图标到第一帧画面

上篇说完环境搭建、建完工程、能跑出“你好,鸿蒙”的页面之后,很多初学的朋友都会冒出一个问题:我就按了一下图标,屏幕上就从无到有出现了一个应用界面,这中间到底发生了什么事?这篇就专门把“应用是怎样运…

2026/10/17 7:17:05 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →