有关C++ 左值、右值和const限定符的说明

左值和右值

左值:是指具有持久地址的对象,可以出现在赋值操作符的左侧或右侧。这里的对象可以是变量名,也可以是表达式。抓重点“有一个持久的内存位置,因此可以被多次读写”。

右值:是指不具有持久地址的对象,通常只能出现在赋值操作符的右侧,通常表示的是临时的、即将被丢弃的对象。主要包括字面量(如8, 'a', 'Shanghai', 3.14)、返回非引用类型的表达式(如函数返回非引用类型)、临时对象(如类型转换表达式产生的临时对象)、返回右值引用的表达式(如 std::move()),抓重点“是临时的,一旦被使用,其生命周期就结束了,出现即结束,因此不可以被多次读写”。

const限定符 - 修饰变量

const修饰变量时,表示声明了一个常量变量,必须进行初始化,这和创建引用变量一样(必须在声明引用时将其初始化)

const int num = 8;        //正确写法,下面注释中的写法不对
int a;
int & b = a;
/*
常量
const int num;            
num = 8;

引用
int a;
int & b;
b = a;
*/

修饰函数返回类型

说明函数的返回值不能被修改,这种用法主要用于返回引用类型的函数,因为对于返回值类型为基本数据类型(如 intdouble 等)或复杂对象(如 std::string, 用户定义的类型等)的函数,返回值本身就是一个副本,无论是否加 const 修饰,都不影响到原始值

//如有如下函数原型,其中Stock是一个类
const Stock & topval(const Stock & s) const;

如上第一个const指明函数的返回值不能被修改,该函数返回一个对Stock对象的引用,保证了不被修改,这对于保护数据不被意外修改非常有用。

修饰函数参数

如上第二个const表示以常量引用的方式传递一个Stock对象s,这样可以避免复制对象,提高效率,同时也表明topval函数不会修改传入的Stock对象。

修饰函数体

末尾的const关键字说明这是一个const成员函数,目的是表明该函数在执行过程中不会修改类的任何非静态数据成员。这使得 const 对象能够调用这些函数,因为这些函数不会改变对象的内部状态。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值