C++函数模板

2

C++函数模板

  从今天开始,正式进入C++的高级篇章,之前C++基础介绍的重点内容是函数与指针,C++进阶介绍的重点是引用和面向对象,在高级部分主要介绍模板和STL相关知识,尤其STL是小伙伴们必须要掌握的知识。今天先介绍一下C++的函数模板。

函数模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
using namespace std;

//函数模板:建立一个通用函数,其函数返回值类型和形参类型可以不指定,用虚拟类型代表
//定义函数模板时,要在函数声明或者定义的上一行写template关键字,表示下面定义的类型是函数模板。
template <class T>
void myPrint(T t) {
cout << t << endl;
cout << "模板函数执行" << endl;
}

void myPrint(double a) {
cout << a << endl;
cout << "普通函数执行" << endl;
}

int main() {

int a = 10;
double b = 10.0;
string s = "hello world!";

//使用函数模板时有两种方法。
//自动类型推导,将值传入函数中,会根据传入的类型自动确定模板中的类型。
//显示指定类型,可以用函数名<类型名>(参数)指定传入的类型。myPrint<int>(a);也可以达到相同的效果。
myPrint(a);
myPrint(b);
myPrint(s);

return 0;
}

1

函数模板与普通函数的区别

  1. 普通函数可以发生隐式类型转换,函数模板中自动类型推导不可以,显示指定可以。
  2. 如果普通函数和函数模板都可以调用,则优先使用普通函数,可以通过显示指定空模板参数调用函数模板。
  3. 如果函数模板可以发生更好的匹配,则优先使用函数模板。
  4. 函数模板也可以发生重载。

C++小结

  函数模板是一种高级的技巧,对于多种类似的参数输入,不需要重载大量的函数,减少了代码的冗余度,提高了复用性。

-------------本文结束感谢您的阅读-------------
0%