簡體   English   中英

(&) - 括號中的&符號 - 在此代碼中是什么意思?

[英]What does (&) — ampersand in parentheses — mean in this code?

這個答案中 ,給出了以下代碼(C ++ 11):

template <typename T, size_t N>
constexpr size_t size_of(T (&)[N]) {
    return N;
}

在這種情況下, (&)意味着什么? 這種事情非常難以搜索。

它是這樣的簡寫:

template <typename T, size_t N>
constexpr size_t size_of(T (&anonymous_variable)[N]) {
    return N;
}

在函數中,你實際上並不需要變量的名稱 ,只需要N上的模板推導 - 所以我們可以簡單地選擇省略它。 括號在語法上是必需的,以便通過引用傳遞數組 - 您不能按值傳入數組。

這是通過引用將數組作為參數傳遞:

template <typename T, size_t N>
constexpr size_t size_of(T (&)[N]) {
    return N;
}

因為你無法傳遞這樣的數組:

template <typename T, size_t N>
constexpr size_t size_of(T[N]) {
    return N;
}

如果為數組指定了名稱,它將如下所示:

template <typename T, size_t N>
constexpr size_t size_of(T (&arrayname)[N]) {
    return N;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM