什么是深拷贝与浅拷贝

深拷贝和浅拷贝

在这里插入图片描述
#千锋物联网逆战班#
别人再好,也是别人。自己再不堪,也是自己,独一无二的自己。只要努力去做最好的自己,一生足矣。为自己的人生负责,为自己的梦想买单。

1、浅拷贝

同一类型的对象之间可以赋值,使得两个对象的成员变量的值相同,两个对象仍然 是独立的两个对象,这种情况被称为浅拷贝.一般情况下,浅拷贝没有任何副作 用,但是当类中有指针,并且指针指向动态分配的内存空间,析构函数做了动态内 存释放的处理,会导致内存问题。
在这里插入图片描述

2、深拷贝

当类中有指针,并且此指针有动态分配空间,析构函数做了释放处 理,往往需要自定义拷贝构造函数,自行给指针动态分配空间,深拷贝。
在这里插入图片描述

案例:

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;
} 	
发布了52 篇原创文章 · 获赞 42 · 访问量 4956

猜你喜欢

转载自blog.csdn.net/weixin_43288201/article/details/104953166