功能模板例如參數在C++模板
template<typename T, int n>
T max(T (&arr)[n])
{
T maxm = arr[0];
for(int i = 1; i <n; ++i)
if (maxm < arr[i])
maxm = arr[i];
return maxm;
}
是改編也喜歡牛逼類型參數?
功能模板例如參數在C++模板
template<typename T, int n>
T max(T (&arr)[n])
{
T maxm = arr[0];
for(int i = 1; i <n; ++i)
if (maxm < arr[i])
maxm = arr[i];
return maxm;
}
是改編也喜歡牛逼類型參數?
是
arr
也是類型參數,如T
?
否arr
是一個調用參數。它既不是類型參數也不是非類型參數
arr
是函數參數的名稱。這不是一個類型參數。其類型是對元素類型爲T
和長度爲n
的數組的引用。
arr
是一個通常的函數參數,它在函數調用時傳遞一個變量。
然而,這樣的說法的類型用於確定T
和n
,其是模板參數。所以在某種程度上,arr
用於將函數參數鏈接到模板參數。
這個過程被稱爲類型扣除。
arr
是功能參數,該類型從T
和n
推導出來。
考慮更改代碼:
template<typename T, int n>
T max(T (&arr)[n])
{
T* maxel = &(arr[0]);
for(int i = 1; i <n; ++i)
if (*maxel < arr[i])
maxel = &(arr[i]);
return *maxel;
}
在你的版本,如果你給了那些更大的某些對象數組作爲指數每上升一次拷貝構造函數將被稱爲 - 這可能是昂貴莫名其妙,具體取決於T
類型。