0

Infinite Skillsの「高度な C++ プログラミング トレーニング ビデオ」の関数テンプレートに関するセクションで、発表者は、そのような関数に引数を渡すときは、値ではなく参照で渡す必要があると述べました。大変な時間"。これが何であるかはわかりません。この関数は、2 つの引数の最大値を計算し、同じ値を返します。2 つの機能は次のとおりです。

// The function given in the tutorial
T maxVal(T &a1, T &a2)
{
    if(a1<a2)
        return a1;
    else
        return a2;
}

// My function
T maxVal(T a1, T a2)
{
    if(a1<a2)
        return a1;
    else
        return a2;
}

問題は、両方とも正常に動作しているように見えることです。私が得ることができる「困難な時期」を教えてください。

4

1 に答える 1

0

非 const 参照を最初に取得すると、次はサポートされません: max(1, 2); 2 番目の値による引数の取得は、引数をコピーします: max(huge_object_a, huge_object_b); // ただし、コンパイラが最適化する場合があります。

std::maxは:

template <class T> const T& max(const T& a, const T& b);
于 2013-08-11T12:20:42.607 に答える