下面的代码(显然)是正确的语法(在DevCpp中使用g ++),但有一些我似乎无法理解的东西。我对普通变量vs指针与引用有很好的理解,但是关于函数重载如何工作的细节让我望而却步。
单独使用reference-modifier是否足以区分这两个函数,如果两者都是" funcA"下面的函数是定义的,有没有办法调用funcA(int&)?
或者这是否超出了c ++标准中定义行为的范围?
(对于这个问题的范围,我把const修饰符放在一边,但是这里有一个类似的问题:Function Overloading Based on Value vs. Const Reference)
#include <iostream>
#include <iomanip>
using namespace std;
void funcA(int p1);
void funcA(int& p1);
int main()
{
char e;
int x = 0;
//funcA(x); //ambiguous
//funcA((int&)x); //ambiguous
funcA((int)x); //ok, calls funcA(int p1)
funcA(5); //ok, calls funcA(int p1)
scanf("%c", &e);
return 0;
}
void funcA(int p1)
{
cout << " called int funcA(int p1) " << endl;
return;
}
void funcA(int& p1)
{
cout << " called int funcA(int& p1) " << endl;
return;
}