计算机系统应用教程网站

网站首页 > 技术文章 正文

C++基础Day01---左值、右值

btikc 2024-09-12 12:07:24 技术文章 9 ℃ 0 评论

左值和右值的区别:仅仅是因为赋值运算符=的两个运算对象,左侧的值和右侧的值

真实的情况不是这样的,下面展开深入介绍下:

  • 左值和右值描述

当对象被用作左值的时候,用的是对象的身份(在内存中的位置);

当一个对象被用作右值的时候,用的是对象的值(内容

  • 如何区分和判断:

左值是表达式的持久对象,它有明确的存储位置,

而右值是临时的,通常不具有可识别的存储位置,主要用于立即操作或赋值。

区分左值和右值,终究还是要看能否取地址

  • CPU 眼里的引用和指针

引用是一种更加安全的指针,引用是必须初始化的,而指针可以不初始化,

但是指针有可能是一个野指针,也有可能是一个null指针。

从汇编的角度来看,引用和指针做的事情是样的。

扩展思考:

什么是引用?是给一块内存空间【有名字,或没有】起一个别名。

什么是左值引用?给一个本来就有名字的内存空间另外起一个名字。

什么是右值引用?给一个本来没有名字的内存空间起一个名字。以至于能够利用这块空间。

  • 示例:

左值引用:

int X = 0;

int &Ref1 = X;

右值引用:

使用&&运算符声明。为右值引用初始化的一定是右值,不可以使用左值代替如下:

int X = 0;

int &&Ref2 = X + 3;

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表