左值与右值的关系

左值是持续时间长,针对地址进行操作的,操作符为&

右值持续时间短,主要针对寄存器操作的,操作符为&&

有时候为了提升系统的性能,对对象进行移动操作,但是不要对其进行内容的复制或者内存的操作,那么就用右值,

有一根函数包含在<utility>头文件中的std::move()可以将左值转为右值

 1、主要是练习了左值和右值的用法,这个再提升性能上有很大的帮助,因为对右值的操作是对寄存器的操作,实现了对内容的移动的时候不会造成资源的复制,
2、std::move可以将左值引用转为右值引用,只有移动没有内容的搬迁和内存的拷贝
3、左值具有持久性,右值具有短暂性

4、因为右值引用是c ++ 11的标准因此再用编译器编辑的时候要加上gnu++1y,完整的指令是 g++ 1.cc -o 11 -std = gnu++1y

#include <iostream>
#include <utility>

int main()
{
    int i = 42;
    std::cout << i << std::endl; 
    int &r = i; 
    std::cout << r << std::endl; 
    const int  &rr = i; 
    std::cout << rr << std::endl; 
    const int &r3 = i*42; 
    std::cout << r3 << std::endl; 
    const int &r4 = i*42; 
    std::cout << r4 << std::endl; 
    int && r5 = i*42; 
    int r6 = std::move(r5); 
    std::cout << r6 << std::endl; 
    int && r7 = i*42; 
    std::cout << r7 << std::endl; 
    const int &r8 = i*42;  
    std::cout << r8 << std::endl; 
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值