需要使用参考参数进行函数重载课程

时间:2014-05-23 16:18:04

标签: c++ pass-by-reference overloading

下面的代码(显然)是正确的语法(在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;
}

0 个答案:

没有答案