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

原创 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++]模板与泛型编程

模板与泛型编程 本文尝试着介绍对泛型编程的理解,从而扩展我们的template编程。泛型编程是C++中非常重要的一部分,它使得我们节省了很多编写不同代码的体力。 1. 了解隐式接口和编译器多态与O...
  • stary_yan
  • stary_yan
  • 2016年05月04日 11:56
  • 1144

第十六章 模板与泛型编程

模板是泛型编程的基础。 16.1 定义模板 16.1.1 函数模板   function template 函数模板   关键字 template + 模板参数列表 template para...
  • yvhqbat
  • yvhqbat
  • 2015年11月13日 17:02
  • 177

【c++primer】第十六章:模板与泛型编程

编写函数模板,接受一个ostream引用和一个值,将该值写入流。用至少四种
  • muyimo
  • muyimo
  • 2014年07月20日 08:34
  • 266

第十六章 模板和泛型编程

1.函数模板可以用与非模板函数一样的方式声明为 inline。说明符放在模板形参表之后、返回类型之前,不能放在关键字 template 之前。     template inline T min(...
  • story_1982
  • story_1982
  • 2012年09月30日 11:21
  • 233

c++primer要点-模板与泛型编程

1.当调用一个函数模板时,编译器用函数实参来推断模板实参,并实例化一个特定版本的函数;也可以提供显示模板实参。 2.除了定义类型参数,还可以在模板中定义非类型参数,我们通过一个特定的类型名来指定非类型...
  • lovecrystalvc
  • lovecrystalvc
  • 2015年07月11日 14:04
  • 270

C++模版和泛型编程

面对对象编程(OOB):能处理类型在程序运行之前都未知的情况 泛型编程:在编译时能获知类型 它们在编写时都不知道类型 泛型编程:容器,迭代器1、定义模版//书写函数比较两个变量的大小,在不知道变...
  • u014594609
  • u014594609
  • 2016年08月03日 20:21
  • 114

C++ Primer 学习笔记_78_模板与泛型编程 -实例化[续]

模板与泛型编程 --实例化[续] 二、函数模板的显式实参 在某些情况下,不可能推断模板实参的类型。当函数的返回类型必须与形参表中所用的所有类型都不同时,最常出现这一问题。在这种情况下,有...
  • u011744843
  • u011744843
  • 2016年05月09日 18:55
  • 383

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

16.1.1 函数模板 template int compare(const T &v1, const T &v2) { if(v1 < v2) return -1; if(v...
  • u011389977
  • u011389977
  • 2016年10月12日 23:16
  • 162

《c++ primer》 第16章 模板与泛型编程

面向对象编程和泛型编程都能处理编写程序时不知道类型的情况 区别就是OOP是在运行时处理,而泛型编程是在编译的时候就能知道类型了 一.定义模板 1.我们可以为函数定义一个模板,而不是为每一个类型定义...
  • wwh578867817
  • wwh578867817
  • 2015年01月30日 14:07
  • 1906

模板与泛型编程2

1.模板实参推断1.1 自动类型转换const转换:非const对象的引用(指针)传递给一个const的引用(指针)形参。 数组或函数指针转换:若函数实参不是引用类型,则可以对数组或函数类型的实参应...
  • zhanghuanzj
  • zhanghuanzj
  • 2016年03月04日 22:31
  • 256
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第十六章 模板与泛型编程 (略过很多部分)
举报原因:
原因补充:

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