考虑以下两个函数重载:
int foo(int a)
{
return 20;
}
const char foo(double b)
{
return -3;
}
int x = foo(6.0);
cout << x;
为什么这个例子的结果取决于具体的编译器或平台?
编译按ISO / IEC 14882:1998进行。
答案 0 :(得分:13)
函数重载是一个红鲱鱼;将在所有平台上选择重载char foo(double)
。
关键区别在于char
类型本身:标准允许它是有符号或无符号的。选择哪一个是实现定义。
在具有无符号char
的系统上,函数将返回正数CHAR_MAX - 2
(作为char(-3)
的结果)。