zoukankan      html  css  js  c++  java
  • C++___深浅拷贝

    深浅拷贝

    浅拷贝

    同一类型的对象之间可以赋值,使得两个对象的成员变量的值相同,两个对象仍然是独立的两个对象,这种情况被称为浅拷贝.

    一般情况下,浅拷贝没有任何副作用,但是当类中有指针,并且指针指向动态分配的内存空间,析构函数做了动态内存释放的处理,会导致内存问题。

    深拷贝

    当类中有指针,并且此指针有动态分配空间,析构函数做了释放处理,往往需要自定义拷贝构造函数,自行给指针动态分配空间,深拷贝。

     

    //例子
    class Person{
    public:
    Person(char* name,int age){
    pName = (char*)malloc(strlen(name) + 1);
    strcpy(pName,name);
    mAge = age;
    }
    //增加拷贝构造函数
    Person(const Person& person){
    pName = (char*)malloc(strlen(person.pName) + 1);
    strcpy(pName, person.pName);
    mAge = person.mAge;
    }
    ~Person(){
    if (pName != NULL){
    free(pName);
    }
    }
    private:
    char* pName;
    int mAge;
    };

    void test(){
    Person p1("Edward",30);
    //用对象p1初始化对象p2,调用c++提供的默认拷贝构造函数
    Person p2 = p1;
    }

     

  • 相关阅读:
    [BZOJ2882] 工艺
    团队项目成员和题目
    软件工程课堂作业(最小数组和)
    每周进度条(第六周)
    梦断代码阅读笔记01
    每周进度条(第五周)
    每周进度条(第四周)
    软件工程个人作业03
    软件工程个人作业02
    每周进度条(第三周)
  • 原文地址:https://www.cnblogs.com/beautiful7/p/14197947.html
Copyright © 2011-2022 走看看