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

     

  • 相关阅读:
    Linux 的特殊变量(2)
    Shell 的特殊变量
    linux shell 基本规范
    Linux C 程序的开发环境
    编译和连接
    编程语言与C语言的简介
    Python条件判断和循环语句
    Python基本数据类型
    Java基本数据类型
    Jmeter(1)下载和安装
  • 原文地址:https://www.cnblogs.com/beautiful7/p/14197947.html
Copyright © 2011-2022 走看看