当前位置: 首页 > 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.lryc.cn/news/606430.html

相关文章:

  • 力扣-102. 二叉树的层序遍历
  • 数据治理:数字化时代的 “治” 与 “理” 之道 —— 破解企业数据资产困局
  • 脚手架搭建React项目
  • 解决Python ModuleNotFoundError:使用python -m的妙招
  • Spring MVC体系结构和处理请求控制器
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-52,(知识点:简单一阶低通滤波器的设计,RC滤波电路,截止频率)
  • 【Kubernetes 指南】基础入门——Kubernetes 201(三)
  • 【Linux】的起源 and 3秒学习11个基本指令
  • 第十三天:蛇形矩阵
  • Cesium 快速入门(二)底图更换
  • Spring Security之初体验
  • AUTOSAR进阶图解==>AUTOSAR_SRS_FreeRunningTimer
  • 基于STM32设计的景区便民服务系统(NBIOT)_261
  • 04百融云策略引擎项目laravel实战步完整安装composer及tcpdf依赖库和验证-优雅草卓伊凡
  • Docker 实战 -- cloudbeaver
  • C++手撕简单KNN
  • Apache Tomcat样例目录session操纵漏洞解读
  • vue+elementUI上传图片至七牛云组件封装及循环使用
  • python逻辑回归:数学原理到实战应用
  • 电子电气架构 --- 车载48V系统开辟全新道路
  • YOLO+Pyqt一键打包成exe(可视化,以v5为例)
  • 在Trae中使用MoonBit月兔1 创建项目
  • 极客大挑战2020(部分wp)
  • 材质:3D渲染的隐形支柱
  • window怎么安装pyqt6以及 安装 pythonqt6 会遇到的问题和怎么解决
  • Ubuntu 下配置 NVIDIA 驱动与 CUDA 环境(适配 RTX 4060Ti)
  • Leetcode-206.反转链表
  • 【前端知识】JS单线程模型深入解析
  • LangGraph认知篇-Send机制
  • 掌握Python三大语句:顺序、条件与循环