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 << '\t' << p.m_Age << endl;
}

int main(int argc, char** argv) {
	test01();	
	return 0;
} 

posted @ 2022-05-02 17:17  T,a,o  阅读(98)  评论(0编辑  收藏  举报