代码如下
#include <iostream>
using namespace std;
void tt(int& i) {
cout<<i<<endl;
}
void tt(int i) {
cout<<i<<endl;
}
int main(int argc, char* argv)
{
int i = 0;
tt(i);
return 0;
}
由于调用传值的函数和调用传引用的函数形式相同,因此这种情况下调用tt函数编译器就分不清了
GCC错误如下
ref.cpp: In function `int main(int, char*)':
ref.cpp:16: error: call of overloaded `tt(int&)' is ambiguous
ref.cpp:5: error: candidates are: void tt(int&)
ref.cpp:9: error: void tt(int)