25-深拷贝和浅拷贝

简介: 25-深拷贝和浅拷贝
#include<bits/stdc++.h>
using namespace std;
class Person {
public:
  //无参(默认)构造函数
  Person() {
    cout << "无参构造函数!" << endl;
  }
  //有参构造函数
  Person(int age ,int height) {
    cout << "有参构造函数!" << endl;
    m_age = age;
    m_height = new int(height);
  }
  //拷贝构造函数  
  Person(const Person& p) {
    cout << "拷贝构造函数!" << endl;
    //如果不利用深拷贝在堆区创建新内存,会导致浅拷贝带来的重复释放堆区问题
    m_age = p.m_age;
    m_height = new int(*p.m_height);
  }
  //析构函数
  ~Person() {
    cout << "析构函数!" << endl;
    if (m_height != NULL)
    {
      delete m_height;
    }
  }
public:
  int m_age;
  int* m_height;
};
void test01()
{
  Person p1(18, 180);
  Person p2(p1);
  cout << "p1的年龄: " << p1.m_age << " 身高: " << *p1.m_height << endl;
  cout << "p2的年龄: " << p2.m_age << " 身高: " << *p2.m_height << endl;
}
int main()
{
  //25-深拷贝与浅拷贝
  test01();
  system("pause");
  return 0;
 } 
#include<bits/stdc++.h>
using namespace std;
class person{
  public:
    person(){
      cout<<"无参构造函数"<<endl;
    }
    person(int a,int h)
    {
      m_h=new int (h);
      age=a;
      cout<<"有参构造函数"<<endl; 
    }
    ~person(){
      //析构代码,将堆区开辟数据做释放操作 
      if(m_h!=NULL){
        delete m_h;
        m_h=NULL;
      } 
      cout<<"析构函数"<<endl;
    }
    int age; 
    int *m_h;
};
void test01(){
  person p1(18,160);
  cout<<"p1的年龄为: "<<p1.age<<"身高为:"<<*p1.m_h<<endl;
  person p2(p1);
  cout<<"p2的年龄为: "<<p1.age<<"身高为:"<<*p2.m_h<<endl;
}
int main()
{
  test01();
  return 0;
 }


相关文章
|
5月前
|
设计模式 存储 Java
深拷贝与浅拷贝,就是这么简单
深拷贝与浅拷贝,就是这么简单
|
6月前
|
存储 Cloud Native Linux
C++ 深拷贝浅拷贝
C++ 深拷贝浅拷贝
|
7月前
|
JSON Java API
深拷贝、浅拷贝
深拷贝、浅拷贝
19 0
|
7月前
|
JavaScript 前端开发 Python
故事会【深拷贝和浅拷贝】
故事会【深拷贝和浅拷贝】
|
8天前
什么是深拷贝和浅拷贝哇
什么是深拷贝和浅拷贝哇
|
2月前
|
JavaScript 前端开发
浅拷贝和深拷贝
浅拷贝和深拷贝
18 2
|
6月前
|
C++
22 C++ - 深拷贝和浅拷贝
22 C++ - 深拷贝和浅拷贝
20 0
|
8月前
|
编译器 C++
C++中的深拷贝和浅拷贝介绍
对于基本类型的数据以及简单的对象,它们之间的拷贝非常简单,就是按位复制内存。例如: class Base{ public: Base(): m_a(0), m_b(0){ } Base(int a, int b): m_a(a), m_b(b){ } private: int m_a; int m_b; }; int main(){ int a = 10; int b = a; //拷贝 Base obj1(10, 20);
91 0
|
9月前
|
Java
浅拷贝与深拷贝
浅拷贝与深拷贝
52 0
|
10月前
|
前端开发
对于深拷贝与浅拷贝的理解
对于深拷贝与浅拷贝的理解