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

C++(模板,智能指针)

一、模板

前言

模板使C++中的一种泛型编程语法,允许用户在编写函数或者编写类的的时候使用,使用户编写的数据类型不固定,会在入参时,根据数据类型自动改变。

1、函数模板

就是编写函数时使用的模板,可以用 T 代替函数形参列表的任意数据类型,使数据类型不定。

1)函数模板的语法

template <typename T1,typename T2,....,typename Tn> // 想要有几个不一样的不确定的数据类型,就写几个
函数返回值 函数名(由T代替数据类型的形参列表){函数定义
}注意:函数模板中,T 只能是一种类型,没有提升匹配,不会通过数据类型的兼容性 或 隐式转换,转换成其他匹配的类型

2)函数模板的使用

当调用 func() 函数的时候,T 会更具入参,自动变化

当实参与形参不完全匹配时会报错,不会进行提升匹配
(这个问题很好解决,这里只是展示不能提升匹配)

3)关于函数模板的潜规则

由于 T 可以代替所有数据类型,自然包括多级指针,多级地址,如果都由 T 来代替,会无法区分

因此 T 不允许表示任意类型的指针,指针标识符必须写在 T 外面,如:T*、T**、T*** ······

4)函数模板全特化的语法

template <typename T1,typename T2,....,typename Tn>
函数返回值 函数名(由T代替数据类型的形参列表){函数定义
}
//在以上函数模板的基础上,进行以下特化
template <>
返回值类型 函数名<特化类型1,特化类型2,...,特化类型n>(特化类型行参列表){函数定义
}

5)函数模板全特化的使用 

        当我们由特殊需求,一个函数模板里的逻辑代码不能满足时,可以专门为这个特殊的属性类型写一个全特化的函数模板

 函数模板练习:

1:请使用函数模板,写一个能够针对所有数据类型的数据的快速排序函数,并多写几个数组做测试


 ​​​​​2、类模板

在自定义类的时候使用的模板,可以用 T 代替类中定义任意数据类型,使数据类型不定。

1)类模板的语法

2)如何创建类模板的对象

3)类模板成员方法定义在外部

4)使用类模板内部的数据类型

5)类模板全特化

6)类模板偏特化

7)类模板的继承

二、智能指针

自动管理堆空间,当没有指针指向该堆空间了,就说明该释放了

1)

http://www.dtcms.com/a/308944.html

相关文章:

  • 什么是数据集成?和数据融合有什么区别?
  • Video_1920×1080i 1920_1080p
  • 7月31日作业
  • 模型训练速度慢排查
  • C++法则22:运算符 ::* 和 ->* 和 ::* 是独特的整体运算符,是不可分的。
  • 从关键词到用户意图:2025年Google Trends的语义化SEO实战手册
  • 化学结构式解读指南:从基础认知到InDraw智能识别
  • 大小端字节序详解
  • LCGL使用简介
  • Kubernetes架构概览
  • 2025虚幻5光明之魂开发思考1——借鉴软件工程
  • Dify 从入门到精通(第 6/100 篇):配置你的第一个 LLM:OpenAI、Claude 和 Ollama
  • kafka使用kraft
  • QT 动态属性和静态属性
  • Spring框架与AutoCAD结合应用
  • 2025年6月人工智能领域研究热点扫描|人工智能顶级期刊TPAMI
  • vue3 v-html绑定数据,点击sub实现popover效果
  • kamailio uac_req_send()
  • 项目中如何定义项目范围
  • 【Kiro Code 从入门到精通】重要的功能
  • 删除无效索引:提升写入性能的维护技巧
  • Linux日志管理与时间同步
  • 05 GWAS表型数据处理原理
  • Protobuf动态解析
  • 蓝牙耳机充不进去电怎么办?以换代修更简单!
  • 八股训练--Spring
  • Spring Batch参数校验失败问题分析:JobParametersValidator校验了两次JobParametersIncrementer的参数
  • 详解Vite 配置中的代理功能
  • JavaScript内存管理完全指南:从入门到精通
  • 智能化问题分析(Cherry Stdio+ MCP)