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;
    }

     

  • 相关阅读:
    python常见排序算法解析
    分析python日志重复输出问题
    Mysql数据库基础
    横屏竖屏
    禁止iOS的弹性滚动 微信的下拉回弹
    移动性能
    取消双击上滑(针对iso)
    关于微信端 顶部会撑开页面的解决方案
    CSS动画简介
    browser-sync 使用简介
  • 原文地址:https://www.cnblogs.com/beautiful7/p/14197947.html
Copyright © 2011-2022 走看看