深浅拷贝及其现代写法

#include<iostream>
using namespace std;
class Person
{
public:
	//默认构造
	Person()
	{
		cout << "Person()" << endl;
	}
	//有参构造函数
	Person(int age,int height)
	{
		m_age = age;
		m_height = new int(height);
		cout << "Person(int age, int height)" << endl;
	}
	Person(const Person& p)
	{
		cout << "Person(const Person& p)" << endl;
		m_age = p.m_age;
		//this->m_height = p.m_height;
		this->m_height = new int(*p.m_height);
	}
	~Person()
	{

		m_age = 0;
		if (m_height)
		{
			delete m_height;
			m_height = NULL;
		}
		delete m_height;
		cout << "~Person()" << endl;
	}

	int m_age;
	int* m_height;
};
int main()
{
	
	Person p1(20,180);
	Person p2 (p1);
	cout <<"age:" << p1.m_age << "      " << "height:"<< * p1.m_height << endl;
	cout <<"age:" << p2.m_age << "      " << "height:"<< *p2.m_height << endl;
	return 0;
}

同一块空间不能连续释放两次。 

现代写法则需要通过swap()来实现。

通过string来展示。

相关推荐

  1. python的深浅拷贝

    2024-04-26 02:42:01       57 阅读
  2. Python程序设计 深浅拷贝

    2024-04-26 02:42:01       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 02:42:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 02:42:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 02:42:01       82 阅读
  4. Python语言-面向对象

    2024-04-26 02:42:01       91 阅读

热门阅读

  1. SQLAlchemy 2.0 中文文档翻译完成

    2024-04-26 02:42:01       30 阅读
  2. uniapp 扫码功能

    2024-04-26 02:42:01       185 阅读
  3. 【prometheus学习过程】

    2024-04-26 02:42:01       36 阅读
  4. IntelliLock.Licensing.dll在VS中的16个使用方法

    2024-04-26 02:42:01       37 阅读
  5. 【Python】模拟windows文件名排序

    2024-04-26 02:42:01       30 阅读
  6. 2024 泛娱乐企业出海音视频选型攻略

    2024-04-26 02:42:01       93 阅读
  7. Migrations

    2024-04-26 02:42:01       29 阅读
  8. CSS图像样式

    2024-04-26 02:42:01       34 阅读