在the Infinite Skills "Advanced C++ Programming Training Video"中,在一个关于函数模板的部分中,演示者说在将参数传递给这样的函数时,我们需要通过引用而不是值传递它们,因为它可能导致编译器给我们一个& #34;困难时期"。我不知道这可能是什么。该函数计算两个参数的最大值并返回相同的值。这两个功能如下:
// 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;
}
问题在于两者似乎都运行良好。你能告诉我什么是可能的&#34;困难时期&#34;我能得到什么?
答案 0 :(得分:0)
第一次采用非const引用将不支持:max(1,2); 第二个按值获取参数将复制参数:max(huge_object_a,huge_object_b); //但编译器可能会进行优化。
std::max
是:
template <class T> const T& max(const T& a, const T& b);