官术网_书友最值得收藏!

Syntax

There are two ways to define function templates, as shown in the following code:

template <typename identifier_1, …, typename identifier_n > 
function_declaration;

template <class identifier_1,…, class identifier_n>
function_declaration;

Here, identifier_i (i=1,…,n) is the type or class parameter and function_declaration declares the function body part. The only difference in the preceding two declarations is the keywords one uses class while the other uses typename, but both have the same meaning and behavior. Since a type (such as the basic types int, float, double,enum, struct, union, and so on) is not a class, the typename keyword method was introduced to avoid confusion.

For example, the classic find maximum value function template, app_max(), can be declared as follows:

template <class T>
T app_max (T a, T b) {
return (a>b?a:b); //note: we use ((a)>(b) ? (a):(b)) in macros
} //it is safe to replace (a) by a, and (b) by b now

This function template can work for many data types or classes, as long as there's a copy-constructible type where the a>b expression is valid. For user-defined classes, this means that the greater-than operator (>) must be defined.

Note that the function template and template function are different things. Function template refers to a kind of template that's used to generate functions by a compiler, so the compiler does not generate any object code for it. On the other hand,template function means an instance from a function template. Since it is a function, the corresponding object code is generated by the compiler. However, the latest C++ standard documents suggest avoiding using the imprecision term template function. Therefore, we will use function templates and member function templates in this book.

主站蜘蛛池模板: 廊坊市| 蓬莱市| 长宁区| 元氏县| 嘉禾县| 洛浦县| 延寿县| 宁明县| 甘德县| 横峰县| 阳江市| 白玉县| 田阳县| 威远县| 武威市| 视频| 牡丹江市| 观塘区| 麦盖提县| 工布江达县| 高碑店市| 东乌珠穆沁旗| 铁力市| 苏尼特右旗| 开化县| 依兰县| 平昌县| 兰溪市| 军事| 黄浦区| 黎平县| 乌海市| 甘洛县| 无极县| 乌鲁木齐县| 连山| 松江区| 株洲县| 彩票| 本溪| 烟台市|