有没有办法让这个编译?编译问题
并使其使用整数默认的fct?
使用g ++。
#include <stdio.h>
int fct(int a = 0)
{
printf("a: %d\n", a);
return (0);
}
void fct()
{
}
int main(void)
{
fct();
return (0);
}
有没有办法让这个编译?编译问题
并使其使用整数默认的fct?
使用g ++。
#include <stdio.h>
int fct(int a = 0)
{
printf("a: %d\n", a);
return (0);
}
void fct()
{
}
int main(void)
{
fct();
return (0);
}
没有,因为一旦你添加默认值fct(int)
编译器不能猜到你要调用哪一个:
fct(int)
与ARGfct()
你可以做的是删除默认值,并调用fct(0)
或删除完全没有参数的一个。
C++不会让你编译不明确的代码。如果代码中含糊不清,则必须尝试解决该问题。
函数不能重载,仅在返回类型中有所不同。
查看此链接的示例。 http://xania.org/200711/ambiguous-overloading
以下将只工作:
#include <stdio.h>
int fct(int a)
{
printf("a: %d\n", a);
return (0);
}
void fct()
{
printf("a: 0\n", a);
}
int main(void)
{
fct();
return (0);
}
你不能重载功能由单独的回报类型。让我列举下来了为你的情况下生成的功能 int fct(int a = 0)
会产生两个功能(一个说法,一个没有): int fct(int a)
和int fct()
除了上述功能,你都推出了另一种方法 void fct()
所以你有两个方法,返回类型不同 void fct()
和int fct()
在C++中,你CAN NOT重载函数与变化中的返回类型单独
我建议你看看这个词是什么“暧昧”的意思。 – 2012-03-20 09:09:22
'int fct(int a = 0)'应该返回一个值 – triclosan 2012-03-20 09:10:49
不,没有。 – trojanfoe 2012-03-20 09:12:03