首页 > 其他分享 >拷贝

拷贝

时间:2023-03-27 21:44:10浏览次数:29  
标签:p1 People int Age new 拷贝

  C++中拷贝使用的时机:

  1. 使用一个创建完毕的对象来初始化一个新的对象。

    People p1;

    People p2(p1);          //使用了拷贝,赋值了各个值

 

  2.用值传递的方式给函数参数传值

    void visit(People p) {}

    int main

    {

      People p1;

      visit(p1);           //值传递会复制一个object的副本出来,使用了拷贝

    }

  3.以值的方式返回局部对象

    People copy()

    {

      People p1;          //按道理p1是局部变量,出了函数就会被释放。

      return p1;           //根据p1创建一个新的对象,并且返回

    }

    People p = copy();

 

 

  浅拷贝,简单的拷贝操作

  深拷贝,在堆区的重新开辟内存,进行拷贝操作

 

  C++浅拷贝会引起的问题。

  假设类中用 new 创建了堆区内存,并且 object之间进行了赋值操作,会导致在delete——释放内存,时出现重复释放同一块内存空间的问题。

  因此在使用new并且出现对象赋值操作后,应该使用深拷贝。

  例如:

  int *m_Age;

 

  深拷贝:  m_Age = new int(*p.m_Age);    //p是被拷贝的对象

标签:p1,People,int,Age,new,拷贝
From: https://www.cnblogs.com/yywuqing/p/17263083.html

相关文章

  • 深拷贝函数
    //使用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”:在函数输出数值时,尽量使用返回值而非输出......
  • 浅析深拷贝和浅拷贝
    浅析深拷贝和浅拷贝深拷贝和浅拷贝是面试中经常会被问到的问题,手写深拷贝也是前端手撕题的热点。那么,为什么面试官们都热衷于让大家手写深拷贝呢?当然不只是看你默写代码,这......
  • Python对象的比较、拷贝
    '==' VS 'is'等于(==)和is是Python中对象比较常用的两种方式。简单来说,'=='操作符比较对象之间的值是否相等,而'is'操作符比较的是对象的身份标识是否相等,即它们是否是......
  • C#:.NET深拷贝和浅拷贝
    .NET中的深拷贝和浅拷贝是指对象复制的方式。浅拷贝只复制对象的引用,而不复制对象本身,因此两个对象会共享同一个引用。深拷贝则是复制对象本身,而不是复制对象的引用,因此两......
  • 深拷贝和浅拷贝是什么,有什么区别?
    深拷贝和浅拷贝是关于对象拷贝的概念,用于描述在复制一个对象时,复制的是对象本身还是对象的引用,从而影响到新旧对象之间的关系。浅拷贝是指将一个对象复制一份,但是新旧对象......
  • shell之免密登录和免密拷贝
    expect真是一个好东西,可以解决免密登录服务器和免密下载的问题。记录一下。免密登录:from heremac安装brew/usr/bin/ruby-e"$(curl-fsSLhttps://raw.githubuser......
  • container和主机(host)之间的文件拷贝
    [b]1.从container到主机(host)[/b]使用dockercp命令dockercp<containerId>:/file/path/within/container/host/path/target比如安装mysql之后,复制的到my.cnfdock......