【发布时间】:2012-09-21 18:24:41
【问题描述】:
显式模板参数规范的总结
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
【问题讨论】: