zoukankan      html  css  js  c++  java
  • C++11右值引用,移动主义

    理解1: 左值和右值针对等号而言, 等号左边称为左值, 等号右连称为右值.

    理解2: 左值和右值针对表达式而言, 表达式结束后依然存在的持久对象称为左值, 表达式结束后不存在的持久对象称为右值.

    理解3: 左值和右值针对地址而言, 拥有地址的对象称为左值, 没有地址的对象称为右值.

    C++11的值分类:

    本地图片,请重新上传图片

    更简单,直接,形象的理解为:

    本地图片,请重新上传

    左值可以理解为有地址,有内容

    图片

    C++以前的赋值默认基于拷贝, 效率低, 性能差. 

    亟需向前优化,又须向后兼容. 最佳实践就是使用某种方式区别对待/分开处理二者.

    左值, 右值的概念应需而生! 将表达式的值区别左值与右值, 运算符就能采用不同的手段区别对待. 左值沿用拷贝语义, 而右值也催生了移动语义.

    左值/右值是古老C++既要进化,又要兼容的一种选择, 同时催生了拷贝语义与移动语义.

    其实引用与值的概念完全可以使用指针来实现~感觉更像语法糖, 配合方法重载, 区别处理拷贝与移动语义, 从而减少不必要的对象复制, 结果也就提升了性能.

  • 相关阅读:
    jQuery解析XML
    jQuery常用AJAX-API
    jQuery练习
    jQuery常用Event-API
    jQuery常用Method-API
    jQuery九类选择器
    js对象和jQuery对象的区别
    js对象和jQuery对象相互转换
    jQuery入门
    JSON
  • 原文地址:https://www.cnblogs.com/zolo/p/5849049.html
Copyright © 2011-2022 走看看