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

  • Expert C++
  • Vardan Grigoryan Shunguang Wu
  • 277字
  • 2021-06-24 16:34:05

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.

主站蜘蛛池模板: 南华县| 宁远县| 丹巴县| 桃江县| 渝北区| 饶平县| 米易县| 淮阳县| 克山县| 望奎县| 芷江| 历史| 镇平县| 定远县| 通州区| 银川市| 阳江市| 临泉县| 卓尼县| 武穴市| 荃湾区| 崇文区| 宁强县| 浦江县| 福贡县| 克东县| 龙游县| 穆棱市| 会东县| 微山县| 西平县| 新龙县| 静宁县| 榆中县| 财经| 伊宁县| 云南省| 类乌齐县| 侯马市| 新晃| 吉木乃县|