模板就是建立通用的模具,大大提高复用性(类型参数化)
template<typename T> //声明模板<typename 数据类型名字> 函数声明或定义
#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 << '\t' << p.m_Age << endl; } int main(int argc, char** argv) { test01(); return 0; }