第十六章 模板与泛型编程 (略过很多部分)

原创 2011年02月10日 17:34:00

16.1 模板定义

1) 例子:

template <typename T>

inline int compare(const T& v1,const T& v2)

{

         if(v1<v2) return -1;

         if(v1>v2) return -1;

         return 0;

}

2) typename class是一样的

 

3) 在模板定义内部指定类型

template<class Param,class U>

Param fcn(Param * array,U value)

{

         Param::size_type *p;//这个时候编译器默认size_type是成员变量而不是类型

         typename Param::size_type *p;//OK,这个时候是类型的意思

}

4) 非类型也可以作为模板形参

例子:

template<class T,size_t N>

void array_init(T (&parm)[N])

{

         for(size_t i=0 ; i!=N;++i)

                   parm[i]=0;

}

 

int x[10];

int y[100];

array_init(x);//自动引用实例array_init<int,42>

array_init(y);//同上

16.2 实例化

1) 类模板形参是必须的,类型匹配必须完全匹配

 

2) 使用函数模板的时候,编译器通常会为我们推断模板实参

 

3) 函数指针的实例化

template<class T>

int compare(const T&,const T&)

{

}

int  (*pf1) (const int &,const int &)=compare;

16.3 模板编译类型

关于export一般不要用

16.6 模板特化

1) 函数

template<>

int compare <const char *>(const char * const &v1,const char *const v2)

{

return strcmp(v1,v2);

}

//这样在调用compare模板的时候,如果传入的参数是char *,那么就会用这个特例化的模板,而不是通用模板.

 

2) 可以对类特化,也可以只对类的成员特化

16.7 重载与函数模板

1) 首先考虑普通函数,其次考虑模板函数.首先考虑不需要隐式类型转换的函数,其次考虑需要隐式类型转换的函数

 

相关文章推荐

c++ primer读书笔记--第十六章 模板和泛型编程

c++ primer读书笔记–第十六章 模板和泛型编程件在泛型编程中,我们所编写的类和函数能够多态地用于跨越编译时不相关的类型。一个类或一个函数可以用来操纵多种类型的对象。标准库中的容器、迭代器和算法...

《C++ Primer》读书笔记——第十六章_模板与泛型编程

16.1.1 函数模板 template int compare(const T &v1, const T &v2) { if(v1 < v2) return -1; if(v...

【C++ Primer】第十六章 模板和泛型编程

(一)模板定义 假设想要编写一个函数比较两个值的大小关系。当我们想要比较几组不同的值的时候,我们可以通过函数的重载来实现,这样不免有点麻烦,因为数据类型还是比较多的,因此我们可以采用模板。我们可以不...

c++primer第十六章模板和泛型编程小结-16

第十六章---模板和泛型编程 1、泛型编程:以独立于任何特定类型的方式编写代码。使用泛型程序时,我们需要提供具体程序实例所操作的类型或值。标准库的容 器、迭代器和算法都是泛型编程的例子。每种容器(...

《C++primer(第五版)》学习之路-第十六章:模板与泛型编程

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:libin493073668@sina.com】 16.1 定义模板 1.模板定义以关键字template开始,后跟一个模板...

C++ Primer复习和学习笔记 第十六章 模板与泛型编程

#include "D:\C++WORK\main.h" template T1 & print(T1 & s,T2 val) { s

模板和泛型编程 --实例化-- C++ primer 第十六章(2)

16.1.4. 模板类型形参 类型形参由关键字 class 或 typename 后接说明符构成。在模板形参表中,这两个关键字具有相同的含义,都指出后面所接的名字表示一个类型。模板类型形参可作为类型...
  • kee131
  • kee131
  • 2015年03月24日 13:36
  • 351

C++ Primer 4 第十六章 模板和泛型编程

第十六章 模板和泛型编程 1. 模板定义 定义函数模板:函数模板是一个独立于类型的函数,可作为一种方式,产生函数的特定类型版本。模板定义以关键字 template 开始,后接模板形参表,模板形参表...

【C++ Primer】【学习笔记】【第十六章】模板与泛型编程之一:模板定义

一、函数模板 格式: template int compare(const T &v1, const T &v2) {     ........ } 注1:模板形参表不能为空。 注2...
  • jay_yin
  • jay_yin
  • 2015年01月06日 20:44
  • 209
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第十六章 模板与泛型编程 (略过很多部分)
举报原因:
原因补充:

(最多只允许输入30个字)