跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++

C++ 模板基础

泛型编程是 C++ 中实现代码复用的重要手段,通过模板机制可编写与类型无关的通用代码。内容涵盖函数模板的概念、定义格式及实例化原理,对比了函数重载的局限性,旨在帮助开发者提升代码质量。

leon发布于 2026/3/15更新于 2026/9/469 浏览
C++ 模板基础

1.泛型编程

如何实现一个通用的交换函数呢?

void Swap(int& left, int& right) {
    int temp = left;
    left = right;
    right = temp;
}

void Swap(double& left, double& right) {
    double temp = left;
    left = right;
    right = temp;
}

void Swap(char& left, char& right) {
    char temp = left;
    left = right;
    right = temp;
}
// ...

使用函数重载虽然可以实现,但是有以下几个不好的地方:

  1. 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数
  2. 代码的可维护性比较低,一个出错可能所有的重载均出错

那能否告诉编译器一个模子,让编译器根据不同的类型利用该模子来生成代码呢?

如果在 C++ 中,也能够存在这样一个模具,通过给这个模具中填充不同材料 (类型),来获得不同材料的铸件 (即生成具体类型的代码),那将会节省许多头发。巧的是前人早已将树栽好,我们只需在此乘凉。

泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。

2.函数模板

2.1 函数模板概念

函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本

2.2 函数模板格式

目录

  1. 1.泛型编程
  2. 2.函数模板
  3. 2.1 函数模板概念
  4. 2.2 函数模板格式

更多推荐文章

查看全部
  • Hx0 鹰眼:在浏览器侧栏完成抓包、重放与 AI 审计
  • OpenClaw 跨平台安装指南:Windows、macOS 与 Linux 环境配置
  • PDFSam Basic:轻量开源的 PDF 拆分合并工具
  • STM32单片机智能宠物喂养系统设计
  • Python 与 HTML 实现爱心动态效果代码教程
  • LLM(大型语言模型)概念、发展历程与优劣势分析
  • Effective Modern C++ 条款 37:确保 std::thread 在所有路径上不可结合
  • 前缀和专题:和为 k 的子数组与和可被 k 整除的子数组
  • RAG 工程实践拦路虎之一:PDF 格式解析杂谈
  • Coze Skills + OpenClaw 实战:构建 AI 智能体自动化工作流
  • 前缀和算法实战:和为 K 的子数组与和可被 K 整除的子数组
  • 基于 SpringBoot+Vue+Netty+WebSocket+WebRTC 的视频聊天系统搭建
  • Proteus 9.1 发布:引入 AI 助手辅助电路设计与仿真
  • 本地部署 PaddleOCR-VL 实现免费 OCR 识别
  • 基于 AKSHARE 的 AI 金融数据爬取与分析实践
  • 算法必刷 100 题:寻找数组中心下标与除自身以外乘积
  • UV 包管理工具在 Ubuntu 24.04 下的实战指南
  • Java在AI时代的应用:从机器学习到AIGC全栈方案
  • YOLO26 实时目标检测的关键架构改进与性能基准测试
  • 前缀和算法详解:一维与二维前缀和模板实现

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online