假如还有点迷糊的话,再看一个例子(代码2):
1 #include
2 using namespace std;
3 int abs(int a);
4 float abs(float b);
5 int main()
6 { int a=-5;
7 float c=-2.4f;
8 cout<<"a="<
13 return(a>=0 a:-a);
14 }
15 float abs(float b)
16 { cout<<"float abs"<
17 return(b>=0 b:-b);
18 }
假如还按照原来的感觉,那么输出顺序应该是a=int abs
5
c=float abs
2.4
运行结果如下图:

图(2)
还是按照上面提到的汇编的方法分析下,压入堆栈的汇编伪代码如下:
push endl;
push abs(c);//需要强调的是这一步中 float abs立刻在屏幕中显示出来,无需等到所有的值压入堆栈完毕
push c=;
push endl;
push abs(a);//这一步也立刻把int abs显示出来,显示在float abs下面
push a=;
等上面所有的步骤执行完后,然后堆栈中的值依次出栈,最后的输出结果如图(2),代码(2)用到了重载函数,也是很有趣的知识。顺便提一句,在重载函数中,任意两个函数的参数表中函数的个数,各参数的数据类型和顺序不能完全一样,如int func(int a,char b,float c)和double func(int d,char e,float f)。