[转载] 深层复制构造函数和浅层复制构造函数区别

参考链接: Python复制(深层复制和浅层复制)

构造函数用来初始化对象的,复制构造函数是把一个已知的对象复制给新的对象,(2者都是对象)。 

浅复制构造函数只复制指针(换句话说就是2个对象的地址一样),例如 

class A 

pubic: 

  A(){x = new int; *x =  8;} 

  A(const A &a) 

  { 

   x = a.x   //浅层复制构造函数 

  } 

  ~A(){delete x; x = NULL;} 

private: 

int *x; 

深复制构造函数定义内new了一个新地址,因此2个对象的地址不一样,析构2个对象的时候不会象浅复制构造函数那样重复析构一个地址了。例如 

class A{pubic:  A(){x = new int; *x =  8;}  A(const A &a)  {   x = new int;    //注意区分x,这个x是复制的对象中的指针x   *x = *(a.x)   //浅深层复制构造函数  }  ~A(){delete x; x = NULL;}private:int *x;} 重点是区分概念,和区分x,要不很容易混乱另外补加一个小概念,对于高大上的“级连”,比如说cout语句能实现级连,就是指提取运算符"<<"能连续使用,例如cout<<x<<y<<z;这里的"<<"用了三次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值