C++中实参与形参的转换问题?

tjj5203 2008-03-05 09:12:12
#include <iostream>
using namespace std;
template <typename T,size_t N>
void array_init(T (&parm)[N])//这里&parm为什么要加个();
{
for(size_t i=0;i!=N;++i)
{
parm[i]=i;
cout<<parm[i];}
}
int main()
{ int x[4];
array_init(x);//这里的x实参与模板函数中的形参匹配吗?不匹配是怎么转换的?
system("pause");
return 0;
}
...全文
153 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chappell 2008-03-05
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
template <typename T,size_t N>
void array_init(T (parm)[N])//这里&parm为什么要加个();
{
for(size_t i=0;i!=N;++i)
{
parm[i]=i;
cout <<parm[i];
}
}
int main()
{
int x[4];
array_init<int,4>(x);//这里的x实参与模板函数中的形参匹配吗?不匹配是怎么转换的?
system("pause");
return 0;
}

taodm 2008-03-05
  • 打赏
  • 举报
回复
编译一下就知道是否匹配了.
  • 打赏
  • 举报
回复
匹配呀,
这个模板匹配 数组引用。
ttkk_2007 2008-03-05
  • 打赏
  • 举报
回复
3楼的,人家明明是&parm,你为什么给改成parm。这里是说他要引用一个数组
举个例子:

void array_init(int (&parm)[4])
{
for(int i=0;i!=4;++i)
{
parm[i]=i;
cout <<parm[i];
}
}
int main()
{
int x[4];
array_init(x);
return 0;
}
//把x[4]换成x[5]就错了

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧