设为首页 加入收藏

TOP

C++中cout语句背后的堆栈知识(三)
2014-03-10 12:54:29 来源: 作者: 【 】 浏览:239
Tags:cout 语句 背后 堆栈 知识

 

  假如还有点迷糊的话,再看一个例子(代码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)。

      

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.5.4 使用ADT包 下一篇C++对象占用内存大小的思考

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·HTTPS 详解一:附带 (2025-12-26 02:20:37)
·TCP/IP协议到底在讲 (2025-12-26 02:20:34)
·TCP和UDP在socket编 (2025-12-26 02:20:32)
·有没有适合新手练习 (2025-12-26 01:48:47)
·用清华镜像网怎么下 (2025-12-26 01:48:44)