c++ 合成的复制构造函数



如果没有定义复制构造函数,编译器会自动合成一个。与合成的默认构造函数不同,即使我们定义了其他构造函数,也会合成复制构造函数。合成复制构造函数会对成员逐个进行初始化,将新对象初始化为原对象的副本

编译器将原对象的每个非 static 成员,依次复制到正创建的对象。合成复制构造函数直接复制内置类型成员的值,类类型成员使用该类的复制构造函数进行复制。数组成员的复制要注意:虽然一般不能复制数组,但如果一个类具有数组成员,则合成复制构造函数将复制数组。复制数组时合成复制构造函数将复制数组的每一个元素

[cpp]  view plain copy
  1. class Sales_item {  
  2.     // other members and constructors as before  
  3.     private:  
  4.         std::string isbn;  
  5.         int units_sold;  
  6.         double revenue;  
  7.     };  
  8. // 合成复制构造函数如下所示:  
  9. Sales_item::Sales_item(const Sales_item &orig):  
  10.     isbn(orig.isbn),              // uses string copy constructor  
  11.     units_sold(orig.units_sold),  // copies orig.units_sold  
  12.     revenue(orig.revenue)         // copy orig.revenue  
  13.     {    }                        // empty body  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值