我在c++的一个库中找到了一个函数,但我不知道所传入参数的类型,因此,我的知识和理解很完整,对我来说是一件好事。

对我来说,它们看起来像函数指针数组,但是没有*,我的假设对吗?

template < typename _Tp , size_t _Nm >
inline void swap ( _Tp ( & __a ) [ _Nm ] , _Tp ( & __b ) [ _Nm ] )

最佳答案

这两个参数的类型相同。它们是对长度为_Nm的数组的引用,其中每个元素的类型为_Tp。两个参数中元素的类型和数组的长度必须匹配。在以下示例中,请考虑这些参数的类型与arrRef的类型之间的相似性:

int arr1[] = {1, 2, 3, 4, 5};
int (&arrRef)[5] = arr1; // arrRef is a reference to arr1

例如,如果我们具有以下内容:
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = {6, 7, 8, 9, 10};
swap(arr1, arr2);

我们使用签名swap实例化void swap(int (&)[5], int (&)[5])的版本。

关于c++ - 传递给此函数的参数的类型是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13230730/

10-13 09:25