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

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.

主站蜘蛛池模板: 汨罗市| 四子王旗| 津南区| 大姚县| 泗洪县| 潮州市| 白玉县| 福安市| 浠水县| 文化| 张掖市| 綦江县| 灵川县| 金门县| 富裕县| 沅陵县| 澎湖县| 塔河县| 丹阳市| 津市市| 九龙县| 历史| 闻喜县| 上思县| 乌鲁木齐县| 登封市| 墨竹工卡县| 潜山县| 洞口县| 扶沟县| 临武县| 麻城市| 南丰县| 万年县| 峡江县| 南郑县| 应用必备| 炎陵县| 建昌县| 黑山县| 保定市|