本文主要是介绍c++ 类的深浅拷贝,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
浅拷贝:
同一类型的对象之间可以赋值,使得两个对象的成员变量的值相同,两个对象仍然 是独立的两个对象,这种情况被称为浅拷贝. 一般情况下,浅拷贝没有任何副作 用,但是当类中有指针,并且指针指向动态分配的内存空间,析构函数做了动态内 存释放的处理,会导致内存问题。
d
#include<iostream>
#include <cstring>
using namespace std;
class Person
{
private:char *m_name;int m_age;
public:Person(const char *name, int age){m_name = (char*)calloc(1, strlen(name)+1);if (m_name == NULL){cout << "申请空间失败" << endl;}strcpy_s(m_name, strlen(name) + 1, name);m_age = age;cout << "申请空间" << endl;}Person(){cout << "默认构造函数" << endl;}~Person(){if (m_name != NULL){free(m_name);m_name = NULL;}cout << "调用析构函数释放空间" << endl;}Person(const Person &sg){m_name = (char*)calloc(1, strlen(sg.m_name)+1);strcpy_s(m_name, strlen(sg.m_name) + 1, sg.m_name);m_age = sg.m_age;cout << "拷贝构造函数申请空间" << endl;}};
void test01()
{Person ying("yingyu", 10);Person tian = ying;
}
void main()
{test01();
}
拷贝构造函数中再次申请空间,析构时会依次释放空间。
这篇关于c++ 类的深浅拷贝的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!