深拷贝与浅拷贝到底是什么(2)
2023-05-16 来源:百合文库
第二层是,我将A的t2所指向的对象,假设为o1,完整复制一份,假设为o2,将新的o2的地址给B的t2。也达到了复制的效果,且对B的t2所指向的o2进行操作,不会影响到A的t2所指向的o1。拷贝的两层含义,对应了浅拷贝和深拷贝的概念,做了第一层,就是浅拷贝,做到第二层,就是深拷贝。
基于以上内容,很容易可以想到,浅拷贝比深拷贝要更快,但是,从拷贝的意义上来看,浅拷贝相较于深拷贝,要欠缺一点。
实例如下:
#include <iostream>
using namespace std;//20200430 公众号:C语言与CPP编程
class CopyDemo
{
public:
CopyDemo(int pa,char *cstr) //构造函数,两个参数
{
this->a = pa;
this->str = new char[1024]; //指针数组,动态的用new在堆上分配存储空间 strcpy(this->str,cstr); //拷贝过来
}
//没写,C 会自动帮忙写一个复制构造函数,浅拷贝只复制指针,如下注释部分 //CopyDemo(CopyDemo& obj)
//{
// this->a = obj.a;
基于以上内容,很容易可以想到,浅拷贝比深拷贝要更快,但是,从拷贝的意义上来看,浅拷贝相较于深拷贝,要欠缺一点。
实例如下:
#include <iostream>
using namespace std;//20200430 公众号:C语言与CPP编程
class CopyDemo
{
public:
CopyDemo(int pa,char *cstr) //构造函数,两个参数
{
this->a = pa;
this->str = new char[1024]; //指针数组,动态的用new在堆上分配存储空间 strcpy(this->str,cstr); //拷贝过来
}
//没写,C 会自动帮忙写一个复制构造函数,浅拷贝只复制指针,如下注释部分 //CopyDemo(CopyDemo& obj)
//{
// this->a = obj.a;