C++模板

C++模板

①模板是实现代码重用机制的一种工具。就是根据参数类型生成函数和类的机制。它可以分成两类:一是函数模板,二是类模板,他们允许用户构造模板函数,模板类。

也可称通用的函数或者通用的类。

例如:①template<class T> 

              T compare_value(T a, T b);

            ②template < class Type>

                class 类名

                {

                       ..../省略

                 };

②模板,模板函数,模板类和对象之间的关系:(实例化:用具体的类型去替换模板类型参数,然后他就会像普通函数或类那样被编译。)

  ※模板(函数模板,类模板)->实例化-> 模板函数。※模板(函数模板,类模板)->实例化-> 模板类->实例化->对象。

模板函数是定义体和函数模板的定义体相同,而形式参数表的类型则以实际参数类型为依据,生成的重载函数。

  函数模板和模板函数的差别:

   首先,函数模板是模板的定义,定义中用到通用的类型参数

   其次,模板函数是函数的定义,在函数调用的时候,由编译系统编译生成,具有程序代码。

模板编译的的特点是:如果不被加载就不需要编译。

例如:标准迭代程序库的声明:template <class InputInerator, class Distance> void advance (InputInerator&i, Distance n);

④函数模板的声明和定义必须放在同一个文件里,因为模板的声明不是实际的类型或函数,所以模板声明并不占内存空间,且编译器不会对模板的声明进行编译,只有在实例化的时候才生成真正的类型或者函数。

⑤类模板允许用户为类定义一种模式,使得类中的某些数据成员,某些成员函数的参数或者返回值能取任意类型的数据类型。

       Template < class Type>

        class 类名

       {

         public:

                  Type a;

                  Type getValue(Type_value);

        };

   Template用来声明模板,class 后的Type是参数类型或者是非参数类型,可以一个或者多个,如。< class Type,typename Type2>,在类的定义中想要采用通用的数据类型的数据成员,成员函数的参数或者返回值前面需要加上Type。< class Type,typename Type2>尖括号是模板参数表。

⑥类模板和模板类的使用说明:

  ※每一个类模板定义之前,都要在前面加上模板声明:template < class Type>或者template <class T1, class T2>

  ※类模板使用时,必须在类名的后面缀上模板参数<Type>

  ※模板类可以有多个参数

类模板是类的集合不是实际的类,类模板的使用就是将类模板实例化成具体的类。格式: 类名 <实际的类型> 对象名。

实例创建两个参数是char 型的对象,example <char> e1,e2.  此时的example <char> 就是模板类。

 

 ⑦函数模板inline和extern的位置应该放在模板参数表后面。不是template的前面。

   template <class Tpye > inline Type max(Type, Type);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值