首页 > 其他分享 >深浅拷贝

深浅拷贝

时间:2023-04-04 20:24:09浏览次数:40  
标签:obj3 name 对象 深浅 拷贝 指针 obj4

// 注意: 基本数据类型不存在深浅拷贝,只是值传递,复合数据类型才有深浅拷贝之说


        var obj1 = { name: "吴亦凡" };         var obj2 = obj1;         obj1.name = "罗志祥";
        // 相当于把obj1的指针复制了一份给了obj2,两个指针指向了堆内存中的一块内存地址,改变其中一个会影响另外一个(浅拷贝)         // 复合数据类型直接赋值就是浅拷贝操作         console.log(obj2.name);//罗志祥




        // 复制一个复合数据类型,改变其中一个,另一个不受影响,两个对象是独立的,这样的拷贝就是深拷贝         var obj3 = { name: "李云迪" };         var obj4 = {};         for (const k in obj3) {             // k===> "name"             // obj4.name=obj3.name             // obj4.name="李云迪"             obj4[k] = obj3[k]         }
        obj3.name="李易峰";         console.log(obj4.name);//李云迪

        // 总结: 深拷贝和浅拷贝的区别?             //  浅拷贝只是增加了一个指针,指向了已经存在的内存地址,如果原来的对象发生了变化,那么浅拷贝出来的对象也会改变             // 深拷贝是申请了一块新的内存,增加了一个指针,两个指针指向不同的内存地址,两个对象互不影响
//  另一种说法     // 浅拷贝(shallow copy):只复制指向某个对象的指针,而不复制这个对象本身,新旧对象共享一块内存。     // 深拷贝(deep copy):复制并创建一个一模一样的对象,不共享内存,修改新对象旧对象不会变。

标签:obj3,name,对象,深浅,拷贝,指针,obj4
From: https://www.cnblogs.com/huwenlong/p/17248404.html

相关文章

  • 拷贝构造函数
    c++primerp440 1.拷贝构造函数第一个参数是自身类型的引用,并且几乎总是const的。 2.拷贝构造函数通常不应该是explcit显示的......
  • Python遍历时删除元素问题(附深拷贝与浅拷贝介绍)
    问题有时候,我们希望用Python遍历一个列表(或其他可迭代对象),如果其中有我们不需要的元素就把它删除并继续遍历。如以下代码段,我们本希望打印1、3,可最后却只打印了1。a=[1,2,3]foriina:ifi==2:a.remove(i)else:print(i)分析其实,之所以......
  • 赋值,浅拷贝,深拷贝
    在Python中,浅拷贝、深拷贝和赋值,它们之间的区别在于它们复制对象的方式,具体可以分别如下:1.赋值(相当于对象引用)赋值只是将一个变量指向一个已存在的对象,这个变量与这个对象就共享了一个内存地址,当修改这个对象时,所有指向它的变量都会发生变化,例如:list1=[1,2,3]list2=......
  • [软件体系结构/架构]零拷贝技术(Zero-copy)[转发]
    0前言近期遇到难题:1个大数据集的查询导出API,因从数据库查询后占用内存极大,每次调用将消耗近100MB的JVM内存资源。故现需考虑研究和应用零拷贝技术。如下全文摘自:看一......
  • 拷贝
    C++中拷贝使用的时机:1.使用一个创建完毕的对象来初始化一个新的对象。Peoplep1;Peoplep2(p1);     //使用了拷贝,赋值了各个值......
  • 深拷贝函数
    //使用map生成考虑了所有情况的深拷贝函数functiondeepClone(obj,map=newWeakMap()){//基本类型直接返回if(typeofobj!=="object"||obj===null){......
  • poi 导入excel (懒人拷贝代码用)(jdbctemplate)oms版本
     相关内容:1,jdbcTemplate批量导入2,js原始产生form动态产生文件选择框3,反射机制调用set方法 <divclass="l-bar-separator"></div><divclass="group"><aclass="linkad......
  • C++ 直接初始化和拷贝初始化
    首先我们介绍直接初始化:编译器使用普通的函数匹配来选择与我们提供的参数最匹配的构造函数。文字描述可能会让你们云里雾里,那我们直接看代码://先设计这样的一个类class......
  • 返回值优化-消除拷贝
    我们使用gcc编译器,C++11,《c++核心指南》的一个条款:“For“out”outputvalues,preferreturnvaluestooutputparameters”:在函数输出数值时,尽量使用返回值而非输出......
  • 浅析深拷贝和浅拷贝
    浅析深拷贝和浅拷贝深拷贝和浅拷贝是面试中经常会被问到的问题,手写深拷贝也是前端手撕题的热点。那么,为什么面试官们都热衷于让大家手写深拷贝呢?当然不只是看你默写代码,这......