苏坡莱斯 2016-04-19 14:49 采纳率: 50%
浏览 1430
已采纳

关于复制构造函数跟赋值运算符重载

新手求指导 关于两个函数不太理解 复制构造的是同一个内存地址吗 为什么要重载赋值运算符

  • 写回答

3条回答

  • NK_test 博客专家认证 2016-04-19 15:42
    关注

    赋值运算符和复制构造函数都是用已存在的B对象来创建另一个对象A。不同之处在于:赋值运算符处理两个已有对象,即赋值前B应该是存在的;复制构造函数是生成一个全新的对象,即调用复制构造函数之前A不存在。
    CTemp a(b); //复制构造函数,C++风格的初始化
    CTemp a=b; //仍然是复制构造函数,不过这种风格只是为了与C兼容,与上面的效果一样
    在这之前a不存在,或者说还未构造好。
    CTemp a;
    a=b; //赋值运算符
    在这之前a已经通过默认构造函数构造完成。

    而之所以要自定义这些,是因为防止有指针时浅拷贝造成错误。具体可百度 rule of three原则

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题