现在的位置: 首页 > 综合 > 正文

c++模版小结

2013年12月05日 ⁄ 综合 ⁄ 共 924字 ⁄ 字号 评论关闭

模版是泛型编程的基础,我们所编写的类和函数能够多态地用于跨越编译时不想关的类型。一个类或一个函数可以用来操纵多种类型的对象。以下是一些模版的总结:

一、模版的定义

1、 
模版形参可以是表示类型的类型形参,也可以表示常量表达式的非类型形参。

2、 
函数模版定义:template <typename T>int compare(const T &v1,const T &v2)

3、 
类模版可以定义数据成员、函数成员和类型成员。

类模版定义:template<class Type> class Queue

              { Type &front();

              Void push (const Type &); }

4、 
如果是类型形参,我们就知道该形参表示未知类型,如果是非类型形参,我们就知道它是一个未知值。用作模版形参的名字不能在模版内部重用,每个非类型形参前面必须带上类型名字。

5、 
如果拿不准是否需要以typename指明一个名字是一个类型,那么指定它是个好主意。模版非类型形参是模版定义内部的常量值。

二、实例化

1、 
类模版的每次实例化都会产生一个独立的类类型。

2、 
想要使用类模版,就必须显式指定模版实参。  Queue <int> qi;

3、 
多个类型形参的实参必须完全匹配,类型形参的实参的转换受限

4、 
在某些情况下,不可能推断模版实参的类型。有必要覆盖模版实参推断机制,并显式指定为模版形参所用的类型或值。

三、类模版成员

1、 
类模版中的友元声明

A、普通非模版类或函数的友元声明,将友元关系授予明确指定的类或函数。

B、
类模版或函数模版的友元声明,授予对友元所有实例的访问权。

C、
只授予对类模版或函数模版的特定实例的访问权的友元声明。

2、 
任意类可以拥有本身为类模版或函数模版的成员,这种成员成为成员模版,可以定义在包含它的类或类模版定义的内部或外部。

3、 
成员模版有两种模版形参:由类定义的和由成员模版本身定义的。

四、模版特化与重载

1、 
模版特化是一种特化的定义,它定义了模版的不同版本,将一个或多个形参绑定到特定类型或特定值。‘

2、 
函数模版可以重载:可以定义有相同名字但形参数目或类型不同的多个函数模版,也可以定义与函数模版有相同名字的普通非模版函数。

抱歉!评论已关闭.