C++ 类的拷贝函数特点与深拷贝

191 阅读1分钟
  • 对象声明 含深拷贝
class  Person{
public:
    int m_Age; 
    int * m_Height;
    Person(){
        cout << "Person默认构造函数调用" << endl;
    }
    Person(int age){
        m_Age = age;
    }
    Person(const Person &p){
        m_Age = p.m_Age
        m_Height = new Int(*p.m_Height); //深拷贝 类似取值 然后返回地址
    }
    ~Person(){
        if(m_Height != NULL){
            delete m_Height;
            m_Height = NULL;
        }
    }
}

拷贝函数的使用以及特点

  • 拷贝构造函数,如果不写的话,程序会自动生成

使用一个已经创建完毕的对象来初始化一个新对象

  • 会调用两次析构函数
Person p1(20);
Person p2(p1);

值传递的方式给函数参数传值

  • 这个非常有意思,是通过拷贝函数
void doWork (Person p){
    
}
void test02(){
    Person p;
    doWork(p);
}

值方式返回局部对象

Person dowWork2(){
    Person p1;
    retrun p1;
}
void test03(){
    Person p = doWork2();
}