拷贝构造与赋值构造

拷贝构造:

拷贝构造又称复制构造,是一种特殊的构造函数,负责用一个现有的对象构造一个新的对象,只有一个引用型的参数(对象本身)。

类名(类& )

{


}

拷贝函数的参数应该加const保护,但编译器没有强制要求。

编译器会自动生成一个拷贝构造,负责把旧对象中所有的数据拷贝给另一个新创建的对象。

浅拷贝与深拷贝的区别:

如果类成员中有指针,浅拷贝只拷贝指针的值,而深拷贝拷贝指针变量所指向的目标。

什么时候需要实现拷贝构造:

当类中有指针成员时,缺省的拷贝构造就无法完成拷贝(浅拷贝),就需要自己实现一个拷贝构造(深拷贝)。

什么情况会调用拷贝构造:

1、使用现有的对象创建新的对象时

User userNew = userOld;

2、当把对象作为函数的参数时,调用函数时就会调用拷贝构造。(使用引用就不会调用拷贝构造)

赋值构造(赋值运算符)

当用一类现有的对象给另一个现有的类对象赋值时,就会调用赋值构造

void operator = (类& )

{


}

编译器会自动生成缺省的赋值构造,负责把现有对象中所有的数据拷贝给另一个现有的的对象。

什么时候需要实现赋值构造:

当需要深拷贝时,需要实现一个赋值构造,也就是赋值构造与拷贝构造需要同时实现。

编译器会自动生成四个成员函数:构造、析构、赋值构造、拷贝构造。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值