显式模板参数规范的总结
template<class T>
T max(T t1, T t2)
{
if (t1 > t2)
return t1;
return t2;
}
max<double>(120, 14.55); we explicitly determine the type of T as double
我理解上面的部分。
下面,有点不一样
template<class T>
T SumOfNumbers(int a, int b)
{
T t = T(); // ???
t = T(a)+b; //???
return t;
}
这需要两个整数,并将它们相加。尽管在 int 本身中对它们求和是合适的,但此函数模板提供了根据调用者要求以任何类型计算总和(使用 operator+)的机会。例如,以 double 形式获取结果,您可以将其称为:
double nSum;
nSum = SumOfNumbers<double>(120,200); // ???
我了解“显式模板参数规范”主题。但是,这里的条件不同,bcs 函数模板的参数类型已经是确定的。
我无法理解符号“???”之前的行 ?
你能逐步向我解释一下吗?这条线会发生什么
nSum = SumOfNumbers<double>(120,200);
120 是否将 120.0 即从 int 转换为 double ?
什么 T(a) ?这是什么意思?
参考: http: //www.codeproject.com/Articles/257589/An-Idiots-Guide-to-Cplusplus-Templates-Part-1