鱼C论坛

 找回密码
 立即注册
查看: 4671|回复: 6

c++中引用的问题?

[复制链接]
发表于 2012-12-13 19:30:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <iostream.h>

  2. int main(void)
  3. {
  4.         const int a = 5;
  5.         const int &b = a;
  6.         cout << &a << endl;
  7.         cout << &b << endl;
  8.         return 0;
  9. }
复制代码

为什么以上代码执行结果如下:
0x0012FF7C
0x0012FF74

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-13 22:41:38 | 显示全部楼层
很正常啊!
a b 都是一个变量
变量当然要有地址了!
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-12-14 12:01:20 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-12-14 12:04:49 | 显示全部楼层
寒小咸 发表于 2012-12-13 22:41
很正常啊!
a b 都是一个变量
变量当然要有地址了!

如果将程序改为
  1. #include <iostream.h>

  2. int main(void)
  3. {
  4.         int a = 5;
  5.         int &b = a;
  6.         cout << &a << endl;
  7.         cout << &b << endl;
  8.         return 0;
  9. }
复制代码
结果又是:
0x0012FF7C
0x0012FF7C
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-14 13:00:51 | 显示全部楼层
本帖最后由 格式天下 于 2012-12-14 13:02 编辑
  1. 5:            const int a = 5;

  2. 00401058   mov         dword ptr [ebp-4],5

  3. 6:            const int &b = a;
  4. 0040105F   mov         dword ptr [ebp-0Ch],5  //两者相比较,多出来这行,就如同沙发说的那样,b是变量名也需要地址,因为是const
  5.                                               //所以最后输出&b 是[ebp-0ch],而输出&a是[ebp-4]
  6. 00401066   lea         eax,[ebp-0Ch]
  7. 00401069   mov         dword ptr [ebp-8],eax



  8. //这是4楼的程序,上面的是楼主的……

  9. 16:           int a = 5;

  10. 00401058   mov         dword ptr [ebp-4],5

  11. 17:           int &b = a;          //这个汇编中没有给b分配地址,直接进寄存器……效率高点
  12. 0040105F   lea         eax,[ebp-4]
  13. 00401062   mov         dword ptr [ebp-8],eax
复制代码


但愿楼主可以看懂……………………
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-17 12:33:12 | 显示全部楼层
常量引用有些特殊
他会新建一个临时变量
像你这句话会被编译器翻译成
int temp =5
const int&b =temp
你可以试一下 直接
const int&b =2012
应该也是可以的
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-17 12:40:14 | 显示全部楼层
不是说标准c++不能再引用+const么 难道我记错了?
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 22:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表