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

深拷贝与浅拷贝

时间:2024-03-22 17:12:24浏览次数:15  
标签:std cout namespace Person 拷贝 public

 

#include<iostream>
using namespace std;
class Person{
    public:
    Person(){
        cout<<"无参构造函数!"<<endl;
    }
    Person(int age,int height){
        m_Age=age;
        m_Height=new int(height);
        cout<<" 带参构造函数!"<<endl;
        cout<<" 年龄 "<<m_Age<<endl;
        cout<<" 身高 "<<*m_Height<<endl;
    }
    
    Person(const Person &p){
        cout<<"拷贝构造函数"<<endl;
        m_Age=p.m_Age;
        //m_Height=p.m_Height; //浅拷贝
        m_Height=new int(*p.m_Height); //深拷贝
        cout<<" 拷贝构造年龄 "<<m_Age<<endl;
        cout<<" 拷贝构造身高 "<<*m_Height<<endl;
    }

    ~Person(){
        if (m_Height!=NULL){
            delete m_Height;
            m_Height=nullptr;
        }
       
        cout<<"析构函数"<<endl;
    }
    int m_Age=0;
    int *m_Height=nullptr;

};

void test01(){
    Person person1(10,110);
    Person person2(person1);
}

int main(int args ,char **argv){
    test01();
    return 0;

}

  

标签:std,cout,namespace,Person,拷贝,public
From: https://www.cnblogs.com/gishuanhuan/p/18089959

相关文章

  • JavaScript 中对象的浅拷贝(Shallow Copy)和深拷贝(Deep Copy)!!
    在JavaScript中,对象的拷贝可以分为浅拷贝(ShallowCopy)和深拷贝(DeepCopy)。理解这两者的区别是非常重要的,因为它们影响着拷贝后的对象与原始对象之间的关系。浅拷贝(ShallowCopy):浅拷贝只会拷贝对象的第一层属性。如果对象的属性是基本数据类型(例如,字符串,数字,布尔值等),那......
  • Java递归拷贝文件夹
    importjava.io.*;importjava.util.Scanner;publicclassDemo{publicstaticvoidmain(String[]args){FilesrcDirFile=getDirFile("输入源文件夹路径");FiledestDirFile=getDirFile("输入目标路径");if(srcDirFile.e......
  • Python中的深拷贝与浅拷贝有什么区别?
    在Python中,深拷贝和浅拷贝是处理复合对象(例如列表、字典等含有其他对象的对象)时常用到的两种方法。它们之间的主要区别在于复制过程中对内嵌对象的处理方式。###浅拷贝(ShallowCopy)浅拷贝创建了一个新对象,其内容是对原始对象中内容的引用。这意呀着,如果原始对象中的元......
  • 深拷贝和浅拷贝
    一、概念1、浅拷贝拷贝父对象,引用子对象浅拷贝只复制子对象的内存地址,然后把内存地址指向的值返回2、深拷贝拷贝父对象和子对象深拷贝复制了父对象和子对象,拷贝的是内容二、代码:1、针对不可变容器,深浅拷贝效果相同,浅拷贝效果针对可变容器(有嵌套) 二、深拷贝针对可变容......
  • Linux开发:通过sendfile高效的拷贝文件数据
    如果想要将一个文件的内容拷贝到另一个文件中,常规的做法是读取源文件,然后再把内容写入到目的文件中:#include<fstream>#include<iostream>#include<string>#include<vector>usingnamespacestd;vector<string>readFile(conststring&filename){vector<stri......
  • 图解I/O中的零拷贝技术
    什么是零拷贝?        零拷贝是一种计算机系统中的I/O优化技术,它的核心思想是在数据传输过程中尽可能地减少或完全避免CPU将数据从一个存储区域复制到另一个存储区域的操作,从而减少了上下文切换和CPU拷贝时间,提高了系统的性能和效率。在Java领域,诸如Netty、Ka......
  • SSH免密登录与SCP远程拷贝
    SSH免密登录概述在集群环境中,经常需要在不同机器之间进行跳转,开启免密登录可以提高效率,避免频繁输入密码验证。此外,免密登录的环境也可以满足通过脚本远程登录各个机器实现各种自动操作,如:一键启动、一键安装等。免密登录的实现是基于SSH协议实现的。原理两台机器之间实......
  • c++:类和对象中:拷贝构造和赋值运算符重载详解
    c++:类和对象构造函数和析构函数详解`文章目录c++:类和对象构造函数和析构函数详解前言一、拷贝构造怎么写拷贝构造1.拷贝构造也是构造函数的一种,构造函数没有值.所以拷贝构造也没有返回值**2.拷贝构造只有一个形参,正常这个形参是自定义类型对象的引用.3.如果我们......
  • DMA和零拷贝
    一、DMA(直接内存访问)1.作用:解决大量数据转移过度消耗CPU资源的问题2.实现原理:在进行I/O设备和内存的数据传输时,数据搬运到内存的工作全部交给DMA控制器,而CPU不再参加与数据搬运相关的事情。比如在文件传输:原本CPU负责将磁盘控制器缓冲区的内容搬运到内核缓冲区(PageCache,磁盘高......
  • js 实现深拷贝/深复制
    //深拷贝constdeepClone=(obj)=>{vartarget={};for(varkeyinobj){if(Object.prototype.hasOwnProperty.call(obj,key)){if(typeofobj[key]==='object'){target[key]=deepClone(obj[key])......