鱼C论坛

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

[已解决]c++ 引用占空间吗

[复制链接]
发表于 2021-8-17 21:58:44 | 显示全部楼层 |阅读模式

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

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

x
定义一个引用时必须绑定对象,而不是将初始值拷贝给引用。

那一个引用在内存中占空间吗 还是只是一个符号,给编译器看的 编译时自动转换为绑定的对象
最佳答案
2021-8-17 22:24:15
c++ 引用占空间吗
引用和指针一样,都占空间
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-17 22:15:36 | 显示全部楼层
在 C++ 层才区分引用和指针,在汇编语言层看来,引用和指针没有区别,都是一个地址
也就是说在汇编语言层,引用和指针是一回事
#include <iostream>

int main() {
    int a = 1;
    int *pa = &a;
    int &ra = a;
    return 0;
}

_main:
    pushl   %ebp
    movl    %esp, %ebp
    andl    $-16, %esp
    subl    $16, %esp
    call    ___main
    
    ; int a = 1;
    movl    $1, 4(%esp)
    
    ; int *pa = &a;
    leal    4(%esp), %eax
    movl    %eax, 12(%esp)      ; 12(%esp) 是变量 pa 的地址
    
    ; int &ra = a;
    leal    4(%esp), %eax
    movl    %eax, 8(%esp)       ; 8(%esp) 是变量 ra 的地址
    
    ; return 0;
    movl    $0, %eax
    leave
    ret

可以看到,在汇编语言层,引用和指针是完全一样的
一个 leal 和一个 movl
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-17 22:24:15 | 显示全部楼层    本楼为最佳答案   
c++ 引用占空间吗
引用和指针一样,都占空间
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-17 22:29:42 | 显示全部楼层
人造人 发表于 2021-8-17 22:15
在 C++ 层才区分引用和指针,在汇编语言层看来,引用和指针没有区别,都是一个地址
也就是说在汇编语言层 ...

那说明也是占内存的  

我看网上说引用相当于个指针常量 不知道对不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-17 22:47:29 | 显示全部楼层
万千只cnm 发表于 2021-8-17 22:29
那说明也是占内存的  

我看网上说引用相当于个指针常量 不知道对不对

指针常量,什么是 指针常量?
#include <iostream>

int main() {
    int a = 1;
    int *const pa = &a;     // 1
    const int *pa0 = &a;    // 2
    "12345";                // 3
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-17 22:51:43 | 显示全部楼层
万千只cnm 发表于 2021-8-17 22:29
那说明也是占内存的  

我看网上说引用相当于个指针常量 不知道对不对

嗯,好像是这个
int *const pa = &a;
我想,这个说法指的是,引用一旦绑定一个对象,就不可再绑定其他对象
就像上面这个 pa,这个 pa 是不可改变的,之后的代码不能改变 pa 的内容,就是不能让 pa 再指向其他变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-17 23:12:40 | 显示全部楼层
人造人 发表于 2021-8-17 22:51
嗯,好像是这个

我想,这个说法指的是,引用一旦绑定一个对象,就不可再绑定其他对象

嗯嗯。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-22 01:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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