template<typename T>
void test( T a)
{
cout<<typeid(a).name()<<endl; //这里显示是 int* 数组退化了
}
template<typename T>
void test1(T& a)
{
cout<<typeid(a).name()<<endl;//因此当按引用传递时,a被解析为数组,数组没有退化为指针。
}
int main()
{
int b[]={1,2,3};
test(b); //输出 int*
test1(b); //输出 int[3]
int (&arr)[3]=b;//1、ok 这是指向长度为3的整形数组的引用
int (&arr)[4] = b;//2、error 因为b是长度为3的整形数组,所以错误
}
cout<<typeid(a).name()<<endl; //这里显示是 int* 数组退化了
}
template<typename T>
void test1(T& a)
{
cout<<typeid(a).name()<<endl;//因此当按引用传递时,a被解析为数组,数组没有退化为指针。
}
int main()
{
int b[]={1,2,3};
test(b); //输出 int*
test1(b); //输出 int[3]
int (&arr)[3]=b;//1、ok 这是指向长度为3的整形数组的引用
int (&arr)[4] = b;//2、error 因为b是长度为3的整形数组,所以错误
}