C++ 模板:完整指南

作者:Michael Baxter
书评:C++ 模板:完整指南,作者:David Vandevoorde 和 Nicolai M. Josuttis

C++ Templates: The Complete Guide

Boston, Pearson Education, Inc., 2003

ISBN: 0-201-73484-2

54.99 美元(精装)

本书是 C++ 编程未来的用户手册。C++ 正在经历一场巨大的变革,正在远离类似 C 的指针操作。随着标准模板库 (STL) 的引入,它是 C++ 标准库的一部分,不再需要为数据结构和容器进行底层编码。相反,高效的通用工具已经可用于您的代码。

模板是 C++ 所有更改的基础,它为函数引入了参数化类型。这本新书打开了理解模板如何工作的大门,并提供了大量示例。

第一部分介绍了模板的基础知识,在七个章节中赞扬了静态多态的优点,静态多态允许编译时类型检查,而运行时类型检查是不可能的。作者解释了函数模板和类模板之间的区别,如何在模板中使用非类型参数以及如何避免大量问题区域。

第二部分深入解释了模板,并提供了有关模板代码中各种参数、友元函数、名称的重要性和控制以及如何进行实例化的信息。它还介绍了如何推导模板参数以及如何在通用代码和专用代码之间做出决定。

戏剧性的一幕真的在第三部分展开。您甚至可能会发现自己在想,“哇,这是 C++?我不知道它能做到这一切。” 基调是通过对动态与静态多态的讨论来设定的。动态多态通常与 C++ 相关——运行时进行动态调度的继承。模板是一种静态多态形式,并且编译时似乎受到了限制。但事实并非如此。例如,可以通过使用模板化的特征和策略类来调整类的行为。并且,模板可以继承一起使用,用于参数化虚拟等应用,从而结合了两种多态形式的优点。

元编程通常与 Lisp 相关,是模板最强大的用途之一。模板实际上可以用来构建程序编写程序,或代码生成器。在第三部分揭示了这些功能之后,第四部分提供了对高级应用程序的重述。一个亮点是能够使用模板进行类型分类。模板允许您直接将 C++ 中的类型代数用于您自己的应用程序,这是行为模式的关键。

模板已用于构建几个有用的 C++ 库,包括 boost.org 上的大量集合。两位作者都是经验丰富的 C++ 程序员,并且与 C++ 标准委员会密切相关。Vandevoorde 是 comp.lang.c++.moderated 新闻组的联合创始人,Josuttis 在 C++ 方面撰写了大量文章,包括C++ 标准库

—Michael Baxter

电子邮件:mab@cruzio.com

加载 Disqus 评论