除了面向对象的变成之外,C++还有一种编程思想叫做泛型编程
主要利用的技术就是模板
C++提供两种模板机制:函数模板和类模板
1 函数模板
语法:
建立一个通用函数,其函数返回值类型和形参类型可以不具体指定,用一个虚拟的类型来代表
template<typename T>//函数声明或定义
template 声明建立模板
typename 表明后面是数据类型,可以用class代替
T可以替换成别的
比如你要写两个交换函数,一个是实现两个整数交换的,一个是实现两个浮点数交换的
一般是这么做的
//交换整型函数
void swapInt(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
//交换浮点型函数
void swapDouble(double& a, double& b) {
double temp = a;
a = b;
b = temp;
}
然后再调用
如果用了模板,你可以结合他们的相似性写一下
#include<iostream>
using namespace std;
template<typename T>
void swp(T&a, T&b) {
T temp = a;
a = b;
b = temp;
}
void test01() {
int a = 10;
int b = 20;
swp(a, b);//自动推导类型
cout << a << endl << b;
}
int main() {
test01();
return 0;
}
这个template下面紧跟着的声明的函数,必须要确定出T的类型
注意:自动类型推导,必须推导出一致的数据类型T才可以使用
模板必须要确定出T 的数据类型,才可以使用
template<class T>
void func()
{
cout << "func 调用" << endl;
}
void test02()
{
//func(); //错误,模板不能独立使用,必须确定出T的类型
func<int>(); //利用显示指定类型的方式,给T一个类型,才可以使用该模板
}