《C++ Templates中文版》——第2章 函数模板

第2章 函数模板

C++ Templates中文版
这一章介绍函数模板。函数模板是那些被参数化的函数,它们代表的是一个函数家族。

时间: 2024-10-25 06:45:33

《C++ Templates中文版》——第2章 函数模板的相关文章

《C++ Templates中文版》导读

译者序 C++ Templates中文版C++真可谓是包罗万象.博大精深.每个在C++中沉迷多年的爱好者都难免有这样的感慨:使用C++多年过后,我们往往只能算是一个熟练的使用者,却从来不敢给自己冠上"精通C++"的头衔.难道"精通C++"永远都是不惭的大言?然而,在学习.使用和研究C++的过程中,我们总是期望能够向"精通"不断迈进,并领悟C++语言的精髓.我想,要做到这一点起码要注意三个方面:一要把握语言发展的脉搏:二要多应用标准技术:三要洞悉标

《C++ Templates中文版》——2.1 初探函数模板

2.1 初探函数模板 函数模板提供了一种函数行为,该函数行为可以用多种不同的类型进行调用:也就是说,函数模板代表一个函数家族.它的表示(即外形)看起来和普通的函数很相似,唯一的区别就是有些函数元素是未确定的:这些元素将在使用时被参数化.为了阐明这些概念,让我们先来看一个简单的例子. 2.1.1 定义模板下面就是一个返回两个值中最大者的函数模板: //basics/max.hpp template <typename T> inline T const& max (T const&

《C++ Templates中文版》——2.4 重载函数模板

2.4 重载函数模板 和普通函数一样,函数模板也可以被重载.就是说,相同的函数名称可以具有不同的函数定义:于是,当使用函数名称进行函数调用的时候,C++编译器必须决定究竟要调用哪个候选函数.即使在不考虑模板的情况下,做出该决定的规则也已经是相当复杂,但在这一节里,我们将讨论有关模板的重载问题.如果你对不含模板的重载的基本规则还不是很熟悉,那么请先阅读附录B,在那里我们对重载解析规则进行了很详细的叙述. 下面的简短程序叙述了如何重载一个函数模板: //basics/max2.cpp //求两个in

《C++ Templates中文版》——第1章 关于本书

第1章 关于本书 C++ Templates中文版模板,作为C++中的一部分已经有了十几年之久(而且也以各种形式存在),但我们仍然会对它误解.误用甚至产生争论.同时,我们又发现模板可以作为一个工具,用来开发更加干净.更具效率.更加智能的软件.事实上,模板已经成为许多新的C++程序设计范例(paradigm)的基石. 然而,我们发现大部分关于C++模板的书籍和论文对模板理论和应用的介绍都是很肤浅的.即使是少数几本讨论各种模板设计技术的书籍,也未能准确地描述C++语言是如何支持这些模板技术的.于是,

《C++ Templates中文版》——2.3 模板参数

2.3 模板参数 函数模板有两种类型的参数. 1.模板参数:位于函数模板名称的前面,在一对尖括号内部进行声明: template <typename T> //T是模板参数 2.调用参数:位于函数模板名称之后,在一对圆括号内部进行声明: -max (T const& a, T const& b) //a和b都是调用参数 你可以根据需要声明任意数量的模板参数.然而,在函数模板内部(这一点和类模板有区别),不能指定缺省的模板实参[4].例如,你可以定义一个"两个调用参数的

C++中函数模板(function template)返回值

函数模板的返回值也可以定义为模板参数(template parameter), 但是由于无法推导(deduce), 需要显式(explicit)指定; 由于显式指定的顺序是从左至右, 返回值参数尽量放在左面,其余函数参数可以通过传入实参(argument)进行推导; 也可以提供由其他参数推导出的返回值类型, 需要使用拖尾返回类型(trailing return type); 使用decltype()函数推导, 即"编译时定义的类型", 注意使用拖尾返回类型时, 前置需要"au

第六章 C++模板

//------------------------第六章 模板---------------------------------------------- /* 模板是实现代码重用机制的一种工具,可以实现类型参数化.模板分为函数模板和类模板. C++中不建议使用宏,因为宏避开了类型检查机制,容易造成不必要的错误. 模板声明形式: template <class Type> //class可以换成typename 返回类型 函数名(模板参数表) { 函数体 } */ #include <

(一〇六)函数模板

函数模板的意义在于,可以在不同的参数下,起到同样的作用. 按照教程所说,它们使用泛型来定义函数,其中泛型可用具体的类型(如int.double)替换.通过将类型作为参数传递给模板,可使编译器生成该类型的函数.   由于模板允许以泛型(而不是具体的类型)的方式编写程序,因此在有时也会被称为是通用编程.   由于类型是用参数表示的,因此模板特性有时也被称为参数化类型.   格式: template <typename xx> void 函数名(xx &a, xx &b) { xx

Knockout应用开发指南 第四章:模板绑定

原文:Knockout应用开发指南 第四章:模板绑定 模板绑定The template binding 目的 template绑定通过模板将数据render到页面.模板绑定对于构建嵌套结构的页面非常方便.默认情况, Knockout用的是流行的jquery.tmpl模板引擎.使用它的话,需要在安装页面下载和引用jquery.tmpl和jQuery框架.或者你也可以集成其它的模板引擎(虽然需要了解Knockout 内部知识才行).   例子 <div data-bind='template: &quo