C++之模板

一、函数模板

1.基本概念

2.变量作为模板参数

3.多参数函数模板

4.函数模板与重载

注意:

<1> 相同模板

实例化出的模板函数之间形成重载

 

<2>不同模板

注意:

在定义出函数模板的时候,函数模板本身并不是互相重载的关系,因为内存中没有产生任何代码,

只有去使用函数模板时,编译器才会产生出相应的函数代码来,这些函数代码彼此之间才称得上是重载关系。

【在定义函数模板时,函数模板本身并不构成重载,因为仅仅将函数模板定义出来并不能在内存当中产生任何的代码,

只有去使用它的时候,编译器才会产生出相应的函数代码,这些代码才会体现出彼此之间的重载关系。】

5.补充说明

<1>《函数模板》课程评论:

1) 函数模板本身不会在内存中产生代码, 因为没有模板参数就无从知道要合成怎样的函数

2) 模板参数可以是类型, 变量(编译时实际上是常量), 或多个类型和变量的组合

3) 同一个函数模板的不同的模板函数之间可以看作互为重载

4) 函数名称相同但模板参数或函数参数不同的来自不同函数模板的模板函数之间也可以互为重载

 

<2> 注意:

1)模板参数的定义建议使用typename;

2)变量做模板参数,实例化模板传入数据时,变量就变成了常量,(因此没必要用来做函数形参??可以做函数形参,能成功运行,但没必要,浪费开销)

二、类模板

1.基本概念

2.多个参数的类模板

3.特别提醒

原文地址:https://www.cnblogs.com/Tang-tangt/p/9678333.html