#include "iostream"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
using namespace std;
//浅拷贝的问题和问题解决
//深拷贝的应用场景,解决浅拷贝的出现
class NAME1
{
private:
int a;
char *q;
public:
NAME1 (const char *p)
{
int len=strlen(p);//查长度
q=(char *)malloc(len+1);
strcpy(q,p); //地址传递
}
//深拷贝,手工编写构造函数,使得内存奔溃危机解除
NAME1(const NAME1& a)
{
int len=strlen(p);//查长度
q=(char *)malloc(len+1);
strcpy(q,p); //地址传递
}
~NAME1()
{
free(q);
q=NULL;
a=0;
}
protected:
};
int main()
{
NAME1 n1("adafds");//先创立的对象,后释放
NAME1 n2=n1;//浅拷贝的问题出现,因为默认构造函数传递的地址,所以会存在析构多次产生内存奔溃的问题
n2=n1;//c++提供的等号操作也是浅拷贝
system("pause");
return 0;
}
07-14
07-14
07-13
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交