我在c ++中编写并执行了以下代码:
int calc(int x=10,int y=100);int a,b,s,p,m;void main()
{clrscr();cout<<"enter the two numbers:";cin>>a>>b;s=calc(a,b);p=calc(a);`m=calc();cout<<"\n sum:"<<s;cout<<"\n product:"<<p;cout<<"\n subtraction:"<<m;getch();}
int calc(int a)
{int t;b=100;t=a*b;return t;}
int calc(int a,int b)
{int t;t=a+b;return t;}
int calc()
{int t;t=b-a;return t;}
我看到只有一个函数被调用并且正在给出正确的输出。例如:3和4将给出7,但是从乘法它将是101.我对c ++概念不是很好。解释会很有用。 问候。
答案 0 :(得分:1)
点是
s=calc(a,b);
p=calc(a);
m=calc();
所有匹配功能
int calc(int a, int b)
{
int t;
t=a+b;
return t;
}
因为它已定义默认值,如果您没有指定输入:
int calc(int x=10, int y=100);
这意味着如果你使用
calc(1);
将使用
calc(1, 100);
BTW,这甚至不能在VisualStudio 2015上编译,因为错误:
错误C2668:&#39; calc&#39;:对重载函数的模糊调用
答案 1 :(得分:0)
因为您提供了默认值。当您使用calc(a)
致电a=3
时,您的prgramm实际上会运行calc(3,100)
答案 2 :(得分:0)
第一眼看到的代码太奇怪了。
首先,你应该知道全局a = 3,b = 4。 第一次调用calc时提供这两个参数,结果为7。 第二次,只提供一个参数,所以a = 3,b = 100 最后一次没有参数,a = 10,b = 100。
int calc(int x = 10, int y = 100)
{
int t;
t = x + y;
return t;
}
这可能更容易理解?