C++ Primer 5th笔记(chap 16 模板和泛型编程)默认模板实参
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 5th笔记(chap 16 模板和泛型编程)默认模板实参相关的知识,希望对你有一定的参考价值。
1. 默认模板实参default template argument
compare 有一个默认模板实参 less和一个默认函数实参 F ()
template <typename T, typename F> =less<T>
int compare (const T Svl, const T &v2, F f = F ( ) )
{
if (f (vl, v2) ) return -1;
if (f (v2, vl) ) return 1;
return 0;
}
bool i = compare (0, 42); // 使用 less;i为-1
// 结果依赖于 iteml 和 item2 中的 isbn
Sales data iteml (cin), item2 (cin);
bool j compare (iteml, item2, compareIsbn);
- 与函数默认实参一样, 对于一个模板参数, 只有当它右侧的所有参数都有默认实参时,
它才可以有默认实参。
1.1 模板默认实参与类模板
无论何时使用一个类模板, 我们都必须在模板名之后接上尖括号。 尖括号指出类必须从一个模板实例化而来。 特别是, 如果一个类模板为其所有模板参数都提供了默认实参,且我们希望使用这些默认实参, 就必须在模板名之后跟一个空尖括对
template <class T = int> class Numbers { // T 默认为 int
public:
Numbers (T v = 0 ) : val (v) {
}
//对数值的各种操作
private:
T val;
}
Numbers<long double> lots_of_precision;
Numbers<> average_precision; / / 空<>表示我们希望使用默认类型
以上是关于C++ Primer 5th笔记(chap 16 模板和泛型编程)默认模板实参的主要内容,如果未能解决你的问题,请参考以下文章
C++ Primer 5th笔记(chap 16 模板和泛型编程)std::move
C++ Primer 5th笔记(chap 16 模板和泛型编程)模板特例化
C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板特例化
C++ Primer 5th笔记(chap 16 模板和泛型编程)实例化