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调用WebService遇到的问题'Document' object has no attribute 'set'
    jquery AJAX 拦截器 success error
    js 钩子(hook)
    js 继承
    js Object的复制
    js关于 indexOf
    js重排序,笔记
    js类型检测,笔记
    jquery源码的阅读理解
    Windows IPC 连接详解(转)
  • 原文地址:https://www.cnblogs.com/beautiful7/p/14197947.html
Copyright © 2011-2022 走看看