可能重複:
Can someone explain this template code that gives me the size of an array?在問候數組的大小計算
嗨,我期待在這裏張貼的答案:
複製在這裏:
template <typename T, std::size_t N>
std::size_t size(T (&)[N])
{
return N;
}
有人可以解釋我的意義嗎(&)?
可能重複:
Can someone explain this template code that gives me the size of an array?在問候數組的大小計算
嗨,我期待在這裏張貼的答案:
複製在這裏:
template <typename T, std::size_t N>
std::size_t size(T (&)[N])
{
return N;
}
有人可以解釋我的意義嗎(&)?
&
表示該數組通過引用傳遞。這可以防止類型腐朽爲指針。沒有通過引用傳遞你會得到衰減,並沒有關於數組大小的信息。
非模板示例:
void foo(int (&a)[5])
{
// whatever
}
int main()
{
int x[5];
int y[6];
foo(x); // ok
//foo(y); // !incompatible type
}
乾杯& HTH,
的&意味着該陣列是通過引用來傳遞。數組無法通過值傳遞,因爲在這種情況下,它們衰減爲指向第一項的指針。如果發生這種情況,與數組類型關聯的大小信息將丟失。
它在括號中,否則就意味着該函數接受一個指向引用的指針。儘管這樣的事情在C++中不合法,但其語法與您聲明指向數組的指針是一致的。
3210
這是一個不同的問題。 – 2011-02-17 19:38:59
@RobertHarvey:不,他們是一樣的,但措辭不同。這個具體地叫出&,而另一個則詢問維度,但維度由於參考而具有*完全的意義。注意:「當我通過數組時,會發生什麼?」(另一方面)直接由「'的含義(從這裏開始)表示它通過引用傳遞」。 – 2011-02-17 19:42:04