C++ 泛型和特化 泛型 (Generics)泛型编程通过模板实现它允许我们编写可以处理多种数据类型的代码而不需要为每种类型重写代码例子函数模板示例#includeiostream#includestringusingnamespacestd;// 泛型函数模板 - 可以比较任何可比较的类型templatetypenameTTgetMax(T a,T b){return(ab)?a:b;}intmain(){// 使用泛型函数比较整数intintMaxgetMax(10,25);coutMax integer: intMaxendl;// 使用泛型函数比较浮点数doubledoubleMaxgetMax(3.14,2.71);coutMax double: doubleMaxendl;// 使用泛型函数比较字符串string strMaxgetMax(string(apple),string(banana));coutMax string: strMaxendl;return0;}类模板#includeiostreamusingnamespacestd;// 泛型类模板 - 可以存储任何类型的值templatetypenameTclassContainer{private:T value;public:Container(T val):value(val){}TgetValue(){returnvalue;}voidsetValue(T val){valueval;}voiddisplay(){coutValue: valueendl;}};intmain(){// 使用泛型类存储整数ContainerintintContainer(42);intContainer.display();// 使用泛型类存储字符串ContainerstringstrContainer(Hello, Templates!);strContainer.display();// 使用泛型类存储浮点数ContainerdoubledoubleContainer(3.14159);doubleContainer.display();return0;}特化(Specialization)特化允许我们为模板的特定类型提供定制实现当通用模板不能满足某些类型的特殊需求时非常有用例子函数模板#includeiostream#includecstringusingnamespacestd;// 通用模板函数templatetypenameTvoidprintTypeInfo(T value){coutGeneric type: value (size: sizeof(T) bytes)endl;}// 特化版本 - 针对const char*类型templatevoidprintTypeInfoconstchar*(constchar*value){coutC-string: value (length: strlen(value) characters)endl;}// 特化版本 - 针对double类型templatevoidprintTypeInfodouble(doublevalue){coutDouble precision: value (size: sizeof(double) bytes)endl;}intmain(){inti42;doubled3.14159;constchar*strHello, Specialization!;printTypeInfo(i);// 使用通用模板printTypeInfo(d);// 使用double特化printTypeInfo(str);// 使用const char*特化return0;}类模板#includeiostream#includevectorusingnamespacestd;// 通用类模板templatetypenameTclassDataProcessor{public:voidprocess(T data){coutProcessing generic data: dataendl;}};// 特化版本 - 针对vectorint类型templateclassDataProcessorvectorint{public:voidprocess(vectorintdata){coutProcessing vector of integers (size: data.size()):endl;for(intval:data){coutval ;}coutendl;}};// 特化版本 - 针对const char*类型templateclassDataProcessorconstchar*{public:voidprocess(constchar*data){coutProcessing C-string: dataendl;coutString length: strlen(data) charactersendl;}};intmain(){DataProcessorintintProcessor;intProcessor.process(42);DataProcessorconstchar*strProcessor;strProcessor.process(Hello, World!);DataProcessorvectorintvecProcessor;vecProcessor.process({1,2,3,4,5});return0;}总结泛型: 通过模板实现允许编写与类型无关的通用代码提高代码复用性特化: 为特定类型提供定制实现处理通用模板无法满足的特殊情况

相关新闻

最新新闻

检测机构报告延误的五个为什么

检测机构报告延误的五个为什么

第三方检测认证机构去年上了 AI 辅助出报告,预期是提速,实际前半年报告平均出具周期反而拉长了。质量部按标准流程做了一次根因分析,下面是那次分析的完整链条。现象Q1 至 Q2,委托检测报告的平均出具周期由 4.2 个工作日上升至 4.…

2026/8/11 2:09:26
车辆动力学仿真中的随机路面激励建模与应用

车辆动力学仿真中的随机路面激励建模与应用

1. 项目背景与核心价值在车辆动力学仿真和NVH(噪声、振动与声振粗糙度)研究中,路面激励的建模一直是关键难点。传统方法往往将四个车轮的路面激励简化为完全相关或完全独立,这与实际车辆行驶中遇到的复杂路面特性存在明显差异。我…

2026/8/11 2:09:26
applera1n:5分钟解锁iPhone 6s-X的iOS激活锁绕过方案

applera1n:5分钟解锁iPhone 6s-X的iOS激活锁绕过方案

applera1n:5分钟解锁iPhone 6s-X的iOS激活锁绕过方案 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n applera1n是一款专为iOS 15-16系统设计的免费激活锁绕过工具,专门针对A9-A…

2026/8/11 2:09:26
基于PyTorch与LSTM的服务器CPU使用率时间序列预测实战

基于PyTorch与LSTM的服务器CPU使用率时间序列预测实战

在实际技术项目中,我们常常需要基于历史数据进行趋势预测,无论是服务器负载、业务指标还是用户增长。传统的统计模型和机器学习方法虽然有效,但往往需要大量的特征工程和调参。近年来,以深度学习为代表的人工智能技术,…

2026/8/11 2:09:26
Unity游戏逆向调试实战:使用DnSpy反编译与动态分析游戏逻辑

Unity游戏逆向调试实战:使用DnSpy反编译与动态分析游戏逻辑

1. 项目概述:当游戏逻辑成为黑盒你手头有一个已经打包发布的Unity游戏,可能是想研究某个特定功能的实现逻辑,比如某个Boss的AI行为树,或者某个稀有道具的生成算法。但面对的是一个编译后的.dll文件,代码被混淆、被优化…

2026/8/11 2:09:26
Laserfiche推出高级Enterprise Security方案,为高度监管行业提供多区域灾难恢复及GovRAMP就绪合规支持

Laserfiche推出高级Enterprise Security方案,为高度监管行业提供多区域灾难恢复及GovRAMP就绪合规支持

全新安全套件扩展了Laserfiche久经验证的安全控制能力,并新增近实时数据复制功能,为政府机构、执法部门及高度重视安全的企业提供更强保护。 Laserfiche是智能内容管理领域的领先SaaS提供商,该公司今日宣布推出Enterprise Security&#xff0…

2026/8/11 2:04:26