有人可以解释这种语法吗?T (&arr)[arrsize] vs T& arr[arrsize]
Could someone explain this syntax? T (&arr)[arrsize] vs T& arr[arrsize]
这是指在此问题中的第一个正式参数。
注意:
T
和arrsize
在此处作为模板参数传递。
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
相关文章:
- arr[-1]在c++中的奇怪行为
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 在C++中用新表达式制作 arr[n][n]
- different between int **arr =new int [ n]; and int a[i][j]?
- arr[n] 是否以 C++ 为单位打印数组的长度?
- 为什么存储在数组中的地址值与其自己的地址相同,它应该指向某个不同的地址(&arr[0])?
- C++:' arr '和' arr[] '有什么区别
- 在 C/C++ 中将数组作为形式参数作为 int arr[] 和 int arr[N] 传递的区别
- 为什么 arr[i++] 与 arr[i]++ 会这样做?
- 这段代码中的arr[s[i]-'a']有什么用,为什么我们用"a"减去所有字符?
- 澄清了 strcpy() 在像这样初始化字符数组时的工作 *Arr.
- 如何理解"vector<int> avector (arr, arr + sizeof(arr) / sizeof(arr[0]) )"?
- 声明数组>> int arr[] 时出错;在C++(虽然在 Java 中有效)?
- 矢量<bool> arr 重置问题
- 根在 arr[0] 的二进制堆有什么好处
- arr[i] = i++ 和 i = i + 1 语句在 C 和 C++ 中的行为
- 访问函数中 const char *arr[] 的元素
- 数组问题:变量周围的堆栈'arr'已损坏
- 失败,dummy_array<int, 6> arr();
- 有人可以解释这种语法吗?T (&arr)[arrsize] vs T& arr[arrsize]