请教关于函数和字符常量的问题
c++吧
全部回复
仅看楼主
level 13
凝戈🍺 楼主
有一个模板函数
template<unsigned N, unsigned M>
int compare(const char (&p1)[N], const char (&p2)[M])
{
return strcmp(p1, p2);
}
我可以这样调用它compare("hi", "mom");
但是假如我改成int compare(const char p1[N], const char p2[M])或者int compare(const char (*p1)[N], const char (*p2)[M])就编译不了,请问这到底是什么原因
2014年07月12日 02点07分 1
level 15
不传引用的话,数组退化成指针,无法推导出模版参数。而第二个修改就是错误的。
2014年07月12日 03点07分 2
必须传引用,是为了保证形参确实是一个盏数组吧?
2014年07月12日 03点07分
说实话,这个模板原理我不太懂,您能具体给我讲讲吗?
2014年07月12日 03点07分
回复 time是你爹 :什么模版原理[疑问]
2014年07月12日 03点07分
回复 一只大水鱼 :就是这个函数int compare(const char (&p1)[N], const char (&p2)[M])为什么这么写,const char就是指字符常量之类的
2014年07月12日 03点07分
1