当前位置: 首页 > news >正文

c++进阶:类模版和函数模版

文章目录

    • 概述
    • 类模版
        • 1.概述
        • 2.语法
    • 函数模版
      • 1.概述
      • 2.语法
    • 综合示例

概述

在C++中,模板(Template)是一种通用的编程工具,允许程序员编写泛型代码,使得类或函数能够适用于多种不同的数据类型而不需要重复编写相似的代码,C++提供了两种主要类型的模板:类模板和函数模板。

类模版

1.概述

类模板允许定义通用的类,其中的成员变量或成员方法的类型由模板参数指定。这样的类可以处理不同类型的数据,而不需要为每个数据类型编写单独的类。

2.语法
template<typenameT>classBox{private:T content;public:Box(T val):content(val){}Tget()const{returncontent;}voidset(T val){content=val;}};

实例化时需要显式指定类型

Box<int>intBox(123);

成员函数定义在类外时,需要再次声明模板参数

template<typenameT>voidBox<T>::set(T val){content=val;}

函数模版

1.概述

定义一个通用的函数,其中某些参数类型或返回值类型暂不确定,由调用时实际传入的参数类型决定

2.语法

template<typenameT>Tadd(T a,T b){returna+b;}

接调用,编译器根据实参自动推导类型

intresult=add(3,5);// T 推导为 intdoubleres=add(2.5,3.7);// T 推导为 double

指定类型

intval=add<int>(3,5.2);// 强制使用 int,5.2 会转换为 int

综合示例

#include<iostream>#include<string>// 函数模板template<typenameT>Tmax(T a,T b){return(a>b)?a:b;}// 类模板template<typenameT>classWrapper{T value;public:Wrapper(T v):value(v){};voidprint();};template<typenameT>voidWrapper<T>::print(){std::cout<<"Value: "<<value<<std::endl;}intmain(){// 函数模板自动推导std::cout<<max(3,8)<<std::endl;// 8 (int)std::cout<<max(3.14,2.71)<<std::endl;// 3.14 (double)// 类模板Wrapper<int>w1(42);w1.print();// Value: 42Wrapper<std::string>w2("Hello");w2.print();// Value: Hello}

运行效果

http://www.jsqmd.com/news/777025/

相关文章:

  • 智慧展馆如何破局?itc保伦股份直播拆解从“观展”到“共生”的进化路径 - 品牌速递
  • 麦德龙卡回收:专业指南与可靠选择 - 购物卡回收找京尔回收
  • 2026年水枪管厂家哪家质量好?水枪管厂家推荐榜前五名,口碑公认品质更有保障 - 企师傅推荐官
  • 如何高效构建金融数据API:AKShare实战指南与架构深度解析
  • ColabFold:3个步骤,让蛋白质结构预测从实验室走向个人电脑
  • Java 项目教程《黑马商城》微服务拆分 20 - 22
  • OpenReel Video:开源免费,浏览器里实现专业视频编辑!
  • 别再死磕DDPM了!用Score-Based Generative Modeling(SGM)从另一个角度理解扩散模型
  • AegisAI:基于UEBA与AI的主动式数字身份安全守护框架
  • 终极免费屏幕翻译方案:一键跨越语言障碍
  • ZenlessZoneZero-OneDragon技术深度解析:数据驱动的自动化战斗引擎架构
  • 2026香港留学申请中介深度测评,深圳专注香港本科申请机构真实评测 - 品牌2026
  • 郑州双眼皮医生排行榜 - 速递信息
  • 无需启动虚拟机:利用VirtualBox Host-Only实现软路由为PC下挂设备提供DHCP上网服务
  • 无需登录的X/Twitter数据抓取工具xpull:双引擎设计与实战指南
  • 从DDR4到DXL:内存设计核心技术与十年演进深度解析
  • 手把手教你给H3C MSR路由器配置4G/5G上网(保姆级图文教程)
  • 动态漏洞利用框架:从静态Exploit到自适应运行时攻击引擎
  • 震撼收官!itc保伦股份直播解锁智慧展馆新密码,引领行业迈向新纪元! - 品牌速递
  • 抖音内容批量下载技术实现:基于开源工具的高效自动化方案
  • 实测对比:DJI O3、Walksnail Avatar、HDZero,谁才是FPV低延迟图传王者?
  • GEO 是什么:从搜索引擎到「对话式答案」的信息可见性
  • 昆山裕振鑫机械设备:上海大型挖机出租有哪些 - LYL仔仔
  • 告别手动刷新!Python大麦网自动抢票脚本终极指南
  • XXMI启动器:如何用开源模组管理器一站式管理多款二次元游戏
  • 使用Taotoken后团队月度大模型API用量与成本清晰可见
  • 飞思卡尔转型启示:从产品重塑到芯片选型策略
  • 2026年乌鲁木齐断桥平开窗价格与安装指南——本地源头工厂直供模式深度评测 - 优质企业观察收录
  • A-LOAM跑完KITTI数据集后,如何用ROS一键保存点云地图(附两种方法对比)
  • 从分布式ECU到中央计算:汽车电子架构演进与设计范式变革