【C++】左值、右值、移动拷贝构造函数、移动赋值函数

本文介绍了C++中的左值和右值概念,包括它们的定义和区别。接着探讨了移动拷贝构造函数和移动赋值函数的作用,它们旨在减少堆区操作,通过移动资源而非复制来提高效率。文章通过示例代码解释了移动构造函数如何在临时对象中生效,强调了正确使用移动构造函数以避免内存泄漏的重要性。
摘要由CSDN通过智能技术生成

左值和右值的定义以及区别:

先来看在C语言中的左值和右值 :

        左值:可赋值的值为左值

        右值:不可赋值的值为右值

再来看C++中左值右值的定义如下:

        左值:可以取地址的值(有名字的值、非临时量)
        右值:不可取地址的值(没有名字的值、临时量)
       

左值引用:
int a = 10;   //整型a = 10
int& b = a;   //可以编译通过  左值引用就相当于变量的别名   
             

const int a =  10;  //左值引用字面常量的时候  改为常引用const就可以引用了
                    //左值引用要求右值必须能够取地址,如果不能取地址,则必须为常引用



右值引用:
int&& a = 10;   //字面常量10为纯右值,可以编译通过
int&& b = a;    //不可以编译通过  因为a是字面常量10的右值引用   a以及有名字了

说完了上面的定义来看下面这些代码:

//我们下面的String是一个了类
String fun()
{
    String s2("hello");
    return s2;
}

String & fun()
{
    String s2("hello
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值