C++模板编程


680 浏览 5 years, 4 months

1 模板概述

版权声明: 转载请注明出处 http://www.codingsoho.com/

过程式编程范式中主要的编程单元是过程或函数。您可以通过函数来编写不依赖与特定值的算法,从而可以对很多不同的值进行重用;这正是函数具有价值的主要原因。

例如,C和C++中的sqrt()函数计算调用者指定的值的平方根。只能计算一个数字(例如4)的平方根的函数没有什么实际用途。sqrt()是基于参数编写的,参数实际上是一个占位符,可以表示调用者传入的任何数值。用计算机科学家的话说,就是函数参数化了值。

面向对象的程序设计范式加入了对象的概念,对象将相关的数据和行为组织起来,但没有改变函数和方法参数化值的方式。

模板进步利用了参数化的概念,不仅允许参数化值,还允许参数化类型。C++中的类型不仅包含原始类型,例如int和double,还包含用户定义的类,例如SpreadsheetCell和CherryTree。

通过使用模板,不仅可以编写不依赖特定值的代码,还能编写不依赖那些值类型的代码。例如,不需要为保存int、Car和SpreadsheetCell的堆栈编写不同的堆栈类,您可以编写一个堆栈的类定义,这个类定义可以用于任何类型。

尽管模板是一个令人惊异的语言特性,但由于C++中的模板的语法令人费解,所以很多程序员会忽略或避免使用模板。

这一章讲解C++中的模板支持,并且重点讲述模板在STL中的使用。在学习过程中,您可以学会一些有用的小特性,除了标准库之外,还可以在程序中使用这些特性。