明示的なテンプレート引数仕様の要約
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;
}
これは2つのintを取り、それらを合計します。それらを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