m0_56071626 2021-12-07 20:52 采纳率: 95.8%
浏览 41
已结题

c++中加号的重载的问题

我创建了一个bigint类(用于处理位数较多的整数计算),并重载了加号运算,如下图

img

在之后的使用中,我在while循环外定义了一个result变量,如下图

img

在while循环里如下图使用

img


第一次循环中运行正常,但当进入第二次循环时走到result =result+part时程序会报错。
想问一下是为什么,感觉应该是加号重载出问题了

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-12-08 15:47
    关注

    你应该定义拷贝构造函数,进行深拷贝。类似于你的有参构造函数,要为start申请新的空间进行数据复制
    否则你用result = temp2,是进行的浅拷贝,实际上这两个变量会共用start这个指针变量。当return时,temp2变量会进行析构,从而导致共有的start指针变量被系统回收,导致return 的 result中的start变为野指针,外部一操作这个start就会导致程序崩溃

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月16日
  • 已采纳回答 12月8日
  • 创建了问题 12月7日

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题