我正在閱讀有關C++,發現當我們通過引用傳遞數組時,不會發生數組到正常非常量指針轉換(技術上稱爲衰減)。這個限制背後有什麼理由嗎?爲什麼C++數組衰減不會發生?
我知道,在C99有三個基本情況陣列衰變情況,即:
當它是&(地址)的運營商的說法。
它是sizeof運算符的參數。
當它是char [N + 1]類型的字符串文字或wchar_t [N + 1]類型的寬字符串文字(N是字符串的長度)時,用於初始化數組,如char str [] =「foo」;或wchar_t wstr [] = L「foo」;.
此外,在C11中,新引入的alignof運算符不會讓其數組參數衰減到指針中。
在C++中,還有其他規則,例如,當它通過引用傳遞時。
謝謝
你會期望它衰減到什麼程度? – juanchopanza
我不確定問題是什麼是把這個限制背後的理由,在一些情況下,使得事情很難像正常的複製操作模板無效複製(常量T&A,常量T&B)此模板將調用時會出現錯誤複製「STACK」,「STACKOVERFLOW」), –
anonymous
首先你必須解釋你說的是什麼限制。 – juanchopanza