模板

  • 类模板(Class Template)
  • 函数模板(Function Template)

1.类模板定义:

 template<class T1,class T2,....> 
 class A{
     ...
     //在类的定义中可以使用Ti

 };

使用时,应为所有的Ti提供类型,如:A<int,float> a;

2.函数模板的定义:

template<typename T1,typename T2,...>
return_type func_name(parameters){
    ...
   //在函数体中可以使用数据类型参数
}

使用时,直接 函数名(实参)
编译器可以根据调用时传递的参数来自动推演数据类型,所以要注意类型的一致性,如果同一个T推演出来的类型不一致,则会出现错误。
这里又有两种情况:

(1)模板类型参数
用class或typename指定模板参数,这里的模板参数表示类型,如:

template <class U , typename T> calc(const T&,const U&);

(2)非类型模板参数
非类型参数表示一个值而不是一个类型。当一个模板被实例化时,非类型参数被一个用户提供的或编译器推断出的值所替代,这些值必须是常量表达式,从而允许编译器在编译时实例化模板。
如:

     template<unsigned N,unsigned M>
        int func(int (&a)[N],int (&b)[M]){
            //...
        }

注意: 在模板定义中,模板参数列表(即<>中的列表)不能为空。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值