考虑以下两个函数重载:
int foo(int a)
{
return 20;
}
const char foo(double b)
{
return -3;
}
int x = foo(6.0);
cout << x;
Run Code Online (Sandbox Code Playgroud)
为什么这个例子的结果取决于具体的编译器或平台?
编译按ISO/IEC 14882:1998进行.
Bau*_*gen 13
重载函数是一个红鲱鱼; char foo(double)将在所有平台上挑选过载.
关键区别在于类型char本身:标准允许它是有符号或无符号的.选择哪一个是实现定义的.
在具有无符号的系统上char,函数将返回正数CHAR_MAX - 2(作为结果char(-3)).
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |