c++模板学习笔记

一、模板定义:

模板是实现代码重用机制的一种工具,可以实现类型的参数化,即将类型作为参数,从而实现代码重用。模板分为函数模板和类模板两种。

二、函数模板

一般格式如下:
	Template  <class or typename T>
返回类型 函数名(形参表)
{
    //函数定义体 
}
//其中:Template为模板声明的关键字,用class或typename修饰类型参数,模板参数可以是一个,也可以是多个。

实例如下:

template <typename T>   //T为传入的类型
T demo(T a,T b){ 
	return a + b;
}
int main(){

	int a = 1;
	int b = 2;

	//也可传入其他任意基础类型或类类型等,此时实现了代码的重用,即可做int型的a加b,亦可作double型的。
	printf("%d\n",demo(a,b));
	return 0;
}

##三、 类模板 ##

一般格式如下:
	Template  <class or typename T>
class 类名
{
    //类定义...
};
//其中:Template为模板声明的关键字,用class或typename修饰类型参数。

类外函数的实现如下:

1、构造函数
Template  <class or typename T>
类名<T>::类名(参数){

	//函数实现
};

2、一般函数
Template  <class or typename T>
返回值 类名<T>::类名(参数){
	
	//函数实现
};

**其中:Template  <class or typename T> 与 类名<T>尖括号类的参数个数相同,类名<T>中无需关键字class or typename**

实例如下:


无参构造:

template<typename T>
class myClass{

public:
    T a;
    T b;
	myClass();
	T add(T a,T b);
};
template<typename T>
myClass<T>::myClass(){};
template<typename T>
T myClass<T>::add(T a,T b){
    return a + b;
}
int main(){

	myClass<int> demo;
	printf("%d\n",demo.add(a,b));
	return 0 ;
}

有参构造:
template<typename T>
class myClass{
public:
    T a;
    T b;
	myClass(T a,T b);
	T add(T a,T b);
};
template<typename T>
myClass<T>::myClass(T a,T b):a(a),b(b){};
template<typename T>
T myClass<T>::add(T a,T b){
    return a + b;
}
int main(){

	myClass<int> demo(a,b);
	printf("%d\n",demo.add(a,b));
	return 0 ;
}

可以将c++模板和java泛型联系起来,便于理解。本文如有不对之处,请各位读者提供修正意见

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值