C++ 模板

C++模板:函数模板、类模板

模板是一个将数据类型参数化的程序设计工具。代码与数据类型相脱离。

将数据类型作为模板参数,在使用模板时再根据实参的数据类型确定模板参数(即数据类型)。

代码可重用,特别是函数参数或者数据成员的类型多样而函数的类的功能相同时。


1. 函数模板

template  <class T>    // 或者 template  <typename T>

T abs( T val)

{

     return val < 0 ? - val : val;

}

多个类型参数:template  <class T1,, class T2, class T3 ... >

调用:

int i = 0;  cout << abs(i) << end; // 类型T被替换为int


编译器编译时,为每一条函数模板调用语句生成函数模板的一个实例(模板函数),成为函数模板的实例化。函数模板本身不产生可执行代码,只有在实例化时编译器才根据 实参的类型进行类型参数的替换,生成一个真正的函数,然后再对该函数进行编译。


2.类模板

类是对对象的抽象,类模板是对类的抽象。“带参数的类”,“类工厂”

template <class T>
class MyTemClass 
{
private:
	T x;
public:
	void setX(T a) { x = a; }
	T GetX(){ return x; }
};
// 在模板类的外部定义模板类的成员函数
template <class T> // 不能少
void MyTemClass<T>::setX(T a)
{
	x = a;
};

使用: MyTemClass<int>  intObject; 

多个参数的类模板:

template <class T1, int i, class T2>

class MyTemClass

{

    ...

}

调用: MyTemClass<int, 100, float> MyObjClass;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值