模板的复习

1.template <class T> class Arry{}; Arry:是模板. Arry<int>:才是类. : 属于编译时替换。
2. 模板特例化:模板主要用于通用的功能:类或函数,但并不是每个都通用,总有一些特例存在(某些数据类型不支持通用的操作),因此,模板特例化是为了这么一些特例存在的。 类名<...>,函数名<...>, 尖括号在他们的后面,内部必须跟具体的类型(不带变量名),这就是特例化。(如同:函数重载的道理)
如:类的特例话template <> class A<char*>{} :A<char*> a; template<class T> class A<T,int>{} A<int,int> b;
函数成员特例话(如果该特例仅仅只是一个函数的差别,其他的构造、西沟都一样的话,我们可以选择部分函数特例(类似于函数重载)):
template<> void A<char*>::fun(char* c){} A<char*> a;a.fun();
全局函数的特例话:template <> void abc<char*>(char* a){} abc("132");
3.遵循原则:1 最佳匹配原则 2 指针优先原则
4 .有如下情况:

A; template <class T1,class T2> class pair{}; ----> pair<double ,double> pl;

B; template <class T1> class pair <T,int >{};===--->pair<double,int> p2;

C; template <> class pair<int,int>{}; -----------> pair<int,int> p3;

A; template <class T> class feeb{}; -------------->feeb<char>

B; template <class T1*>class feeb{};---------->feeb<char*>

A; template <class T1,class T2,class T3> class trio{}; ------>

B; template <class T1,class T2>class trio<T1,T2,T3>{};---->要求后面2个同类型的,来优先调用这个东西。

C; template <class T1> class trio<T1,T1*,T1*>{};

出错情况:

1. 定义时总是忘记了加 < >

2.模版特例化时,类名/函数名 后面加上“形参变量,晕死”,----应该“只有类型而已”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值