当前位置: 首页 > 面试题库 >

请你回答一下什么是右值引用,跟左值又有什么区别?

宿文栋
2023-03-14
本文向大家介绍请你回答一下什么是右值引用,跟左值又有什么区别?相关面试题,主要包含被问及请你回答一下什么是右值引用,跟左值又有什么区别?时的应答技巧和注意事项,需要的朋友参考一下

右值引用是C++11中引入的新特性 , 它实现了转移语义和精确传递。它的主要目的有两个方面:

1. 消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。

2. 能够更简洁明确地定义泛型函数。

 

左值和右值的概念:

左值:能对表达式取地址、或具名对象/变量。一般指表达式结束后依然存在的持久对象。

右值:不能对表达式取地址,或匿名对象。一般指表达式结束就不再存在的临时对象。

 

右值引用和左值引用的区别:

1. 左值可以寻址,而右值不可以。

2. 左值可以被赋值,右值不可以被赋值,可以用来给左值赋值。

3. 左值可变,右值不可变(仅对基础类型适用,用户自定义类型右值引用可以通过成员函数改变)。

 类似资料:
  • 本文向大家介绍请你回答一下野指针是什么?相关面试题,主要包含被问及请你回答一下野指针是什么?时的应答技巧和注意事项,需要的朋友参考一下 野指针就是指向一个已删除的对象或者未申请访问受限内存区域的指针。

  • 本文向大家介绍请你回答一下测试的相关流程是什么?相关面试题,主要包含被问及请你回答一下测试的相关流程是什么?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 测试最规范的过程如下 需求测试->概要设计测试->详细设计测试->单元测试->集成测试->系统测试->验收测试 来自W模型

  • 本文向大家介绍请你来说一下map和set有什么区别,分别又是怎么实现的?相关面试题,主要包含被问及请你来说一下map和set有什么区别,分别又是怎么实现的?时的应答技巧和注意事项,需要的朋友参考一下 map和set都是C++的关联容器,其底层实现都是红黑树(RB-Tree)。由于 map 和set所开放的各种操作接口,RB-tree 也都提供了,所以几乎所有的 map 和set的操作行为,都只是转

  • 本文向大家介绍请你来回答一下什么是memory leak,也就是内存泄漏 ?相关面试题,主要包含被问及请你来回答一下什么是memory leak,也就是内存泄漏 ?时的应答技巧和注意事项,需要的朋友参考一下 内存泄漏(memory leak)是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制

  • 本文向大家介绍请你回答一下栈和堆的区别,以及为什么栈要快?相关面试题,主要包含被问及请你回答一下栈和堆的区别,以及为什么栈要快?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 堆和栈的区别: 堆是由低地址向高地址扩展;栈是由高地址向低地址扩展   堆中的内存需要手动申请和手动释放;栈中内存是由OS自动申请和自动释放,存放着参数、局部变量等内存   堆中频繁调用malloc和free,会产生

  • 以下两者之间的区别是什么: 这是: 我问,因为我得到不同的行为使用Angular和$超文本传输协议服务与链接。代码有点太多,因此首先是上面的例子。