码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-06-02 11:26:32      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:数列   算法   prime   prim   练习   模板与泛型编程   存在   知识库   泛型   

---恢复内容开始---

声明:

  • 文中内容收集整理自《C++ Primer 中文版 (第5版)》,版权归原书所有。
  • 学习一门程序设计语言最好的方法就是练习编程

1、面向对象编程和泛型编程都是处理在编写程序时不知道类型的情况,不同之处在于,OOP能处理类型在程序运行之前都未知的情况,而在泛型编程中,在编译时就能获知类型了。

2、泛型编程与面向对象编程一样,都依赖于某种形式的多态性。面向对象编程中的多态性在运行时应用于存在继承关系的类。

3、在泛型编程中,我们所编写的类和函数能够多态地用于跨越编译时不相关的类型。一个类或一个函数可以用来操纵多种类型的对象。标准库中的容器、迭代器和算法是很好的泛型编程的例子。标准库用独立于类型的方式定义每个容器、迭代器和算法,因此几乎可以在任意类型上使用标准库的类和函数。

一、定义模板

1、重载函数:

 1 int compare(const string &v1,const string &v2)  
 2 {  
 3     if (v1 < v2)  
 4     {  
 5         return -1;  
 6     }  
 7     else if (v1 > v2)  
 8     {  
 9         return 1;  
10     }  
11   
12     return 0;  
13 }  
14   
15 int compare(const double &v1,const double &v2)  
16 {  
17     if (v1 < v2)  
18     {  
19         return -1;  
20     }  
21     else if (v1 > v2)  
22     {  
23         return 1;  
24     }  
25   
26     return 0;  
27 }  

唯一差异是参数的类型不同,函数体一样。

定义函数模板:。函数模板是一个独立于类型的函数,可以作为一种方式,产生函数的特定类型版本。

 1 template<typename T>  
 2 int compare(const T &v1,const T &v2)  
 3 {  
 4     if (v1 < v2)  
 5     {  
 6         return -1;  
 7     }  
 8     else if (v1 > v2)  
 9     {  
10         return 1;  
11     }  
12   
13     return 0;  
14 }  

模板定义以关键字template开始,后跟一个模板参数列表。这是一个逗号分隔的一个或多个模板参数(template parameter)的列表,用<>包围。模板列表不能为空

2、

3、

二、模板实参推断

1、

2、

3、

三、重载与模板

1、

2、

3、

四、可变参数模板

1、

2、

3、

五、模板特例化

1、

2、

3、

---恢复内容结束---

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

标签:数列   算法   prime   prim   练习   模板与泛型编程   存在   知识库   泛型   

原文地址:http://www.cnblogs.com/zlz099/p/6932023.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!