有人可以解释这种语法吗?T (&arr)[arrsize] vs T& arr[arrsize]

Could someone explain this syntax? T (&arr)[arrsize] vs T& arr[arrsize]

本文关键字:arr arrsize vs 解释 语法      更新时间:2023-10-16

这是指在此问题中的第一个正式参数。

注意:Tarrsize在此处作为模板参数传递。

T (&arr)[arrsize]似乎是某种铸件,但我不确定。&arr不是打字名称,它只是一个正式的参数名称,其旁边的参考符号。为什么不只是放T* arr[]?此外,我认为用实现功能超载的语言中的正式参数列表或强制性施放不可能。(即,引入函数呼叫中的歧义)。我想模板函数引入了有用的歧义,因此在这种情况下允许铸造 - 假设两个模板函数没有相同的签名,则除非铸造?

当实例化此模板时,此参数将变成哪种类型?是指针还是对静态数组的引用?简单地T*;或其他东西?

T (&arr)[arrsize]

在函数参数中使用时,将声明一个名为 arr的变量,该变量是对带有size arrsize的类型T数组的引用。这是将数组传递到函数而没有将其衰减到指针中的一种方式。您可以像在声明的范围中一样使用函数中的数组。

T& arr[arrsize]

是标准不允许的参考数组。它应该是编译器错误。

T& arr[arrsize] arr T&'s的数组(size arraysize )(,在C 中是非法的/strong>)

T (&arr)[arrsize] arr 是对T'S

的数组(大小 arraysize )的引用