C++基础-模板
模板(不深挖哦,是最最浅的)
基本概念
模板就是建立通用的模具,大大提高复用性(类型参数化)
- 模板不能直接使用,它是一个框架
- 模板的通用不是万能的
函数模板
- C++另一种编程思想为泛型编程,主要是利用模板技术
语法
template<typename T>
//声明模板<typename 数据类型名字>
函数声明或定义
- template:声明创建模板
- typename:表示T是一种数据类型
- T:一个数据类型的名字
例子
#include<iostream>
using namespace std;
void swapInt(int &a,int &b){ //普通的整型交换
int c;
c = a;
a = b;
b = c;
}
template<typename T> //模板-整型交换
void mySwap(T &a,T &b){
T temp;
temp = a;
a = b;
b =temp;
}
void test01(){
int a = 10;
int b = 20;
//两种方法来使用函数模板
//1.自动类型推导
mySwap(a,b);
cout << a << b << endl;
cout << "=====================" << endl;
//2.显式指定类型
mySwap<int>(a,b);
cout << a << b << endl;
}
int main(){
test01();
return 0;
}
类模板
建立一个通用类,类中的成员 数据类型可以不具体规定,用一个虚拟的类型来代表
语法
template<typename T1,typename T2...>
类
例子
#include<iostream>
#include<cstring>
using namespace std;
template<typename NameType,typename AgeType>
// 类型一 类型二
class Person{
friend void test01();
private:
NameType m_Name;
//类型一 类型一的对象
AgeType m_Age;
//类型二 类型二的对象
public:
Person(NameType name,AgeType age){
m_Name = name;
m_Age = age;
}
};
void test01(){
Person<string,int>p("Tom",18); //指明类型一是string;类型二是int
cout << p.m_Name << " " << p.m_Age << endl;
}
int main(int argc, char** argv) {
test01();
return 0;
}