C++泛型编程--模板

简介:

@[TOC]

前言:

  • 泛型编程--模板的认识
  • 博主收集的资料New Young,连载中。
  • 博主收录的问题:New Young
  • 转载请标明出处:New Young

背景

C++中对于那些功能类型的函数,比如Swap(a,b)函数,不同的Swap唯一的区别就是a,b的 类型,如果对于每种类型都定义一个Swap函数,很显然这非常冗余,因此C++中提出了泛型编程,即根据实参的类型,编译器自动绝定形参的类型,这就极大的解决代码的冗余度,减少人工消耗。

泛型编程

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

模板是一个空壳,只有确定了具体的某些参数的意义,这个模板才有意义,这就像膜具一样,只有填入东西,才有东西产生

image-20220626192727194

函数模板

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

格式

template

返回值类型 函数名(参数列表){}

typename是用来定义模板参数关键字,也可以使用class(切记:不能使用struct代替class)

image-20220626194029107

作用域

一次template对==最近的一个==函数模板或者类模板有效。

image-20220626194116324

实例化

隐式的实例化

编译器通过实参的类型来确定形参的类型,一旦一个模板参数T实例化后,后续的同一个T都是一样的。

image-20220626195455642

显示的实例化

1.通过在函数名后的<>中指定模板参数的实际类型

2.依据指定的类型,顺序确定模板参数的实际类型

image-20220626200228467

模板参数的匹配原则

完整定义的函数优先原则,模板函数次之。

模板函数的实例化是需要消耗时间的,

image-20220626201007228

类模板

格式

template<class T1, class T2, ..., class Tn>
class 类模板名
{
// 类内成员定义
};

类模板函数的实例化

  1. 正常中使用中,类名代表类型,但是在类模板中类名和类型是不同的
  2. 类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>中即可,类模板名字不是真正的类,而实例化的结果才是真正的类.

    image-20220626202416546

相关文章
|
15天前
|
存储 C++ 容器
C++STL(标准模板库)处理学习应用案例
【4月更文挑战第8天】使用C++ STL,通过`std:vector`存储整数数组 `{5, 3, 1, 4, 2}`,然后利用`std::sort`进行排序,输出排序后序列:`std:vector<int> numbers; numbers = {5, 3, 1, 4, 2}; std:sort(numbers.begin(), numbers.end()); for (int number : numbers) { std::cout << number << " "; }`
17 2
|
26天前
|
编译器 C++
C++入门指南:10分钟带你快速了解模板究竟是什么(建议收藏!!)
C++入门指南:10分钟带你快速了解模板究竟是什么(建议收藏!!)
27 0
|
27天前
|
安全 算法 C++
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits处理弱枚举和强枚举
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits处理弱枚举和强枚举
46 3
|
6天前
|
编译器 C++
C++编程之美:探索初始化之源、静态之恒、友情之桥与匿名之韵
C++编程之美:探索初始化之源、静态之恒、友情之桥与匿名之韵
17 0
|
15天前
|
程序员 C++
C++语言模板学习应用案例
C++模板实现通用代码,以适应多种数据类型。示例展示了一个计算两数之和的模板函数`add&lt;T&gt;`,可处理整数和浮点数。在`main`函数中,展示了对`add`模板的调用,分别计算整数和浮点数的和,输出结果。
11 2
|
27天前
|
存储 移动开发 安全
【C/C++ 口语】C++ 编程常见接口发音一览(不断更新)
【C/C++ 口语】C++ 编程常见接口发音一览(不断更新)
22 0
|
28天前
|
存储 程序员 编译器
【C++ 模板类与虚函数】解析C++中的多态与泛型
【C++ 模板类与虚函数】解析C++中的多态与泛型
46 0
|
28天前
|
算法 编译器 C++
【C++ 模板编程 基础知识】C++ 模板类部分特例化的参数顺序
【C++ 模板编程 基础知识】C++ 模板类部分特例化的参数顺序
21 0
|
1天前
|
C++
c++的学习之路:7、类和对象(3)
c++的学习之路:7、类和对象(3)
9 0
|
1天前
|
存储 编译器 C语言
c++的学习之路:5、类和对象(1)
c++的学习之路:5、类和对象(1)
8 0

热门文章

最新文章