网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月25日漏签0天
c++吧 关注:650,710贴子:2,117,834
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 3回复贴,共1页
<<返回c++吧
>0< 加载中...

类对象析构顺序

  • 只看楼主
  • 收藏

  • 回复
  • 俄风不09
  • &&
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
写了如下码;

得到如下结果:
一共有三个S_class对象;
为什么不是先构造后析构呢?


  • 月无踪
  • ==
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
mark


2026-01-25 01:57:13
广告
不感兴趣
开通SVIP免广告
  • 楠绾绾
  • <<
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
s sam 调用构造函数 i == 0, a == 1
show(sam) 非引用传递 调用复制构造函数 i == 1, a == 2
return sam 返回sam副本 调用复制构造函数 i == 2, a == 3
析构时
首先析构show(sam),sam离开局函数作用域,就是第一次调用复制构造函数得到的对象
所以是析构1
接着析构函数返回的sam,这个sam是来自show中的副本,虽然你没有用,但是还是被返回到main中
出main作用域后被析构,所以是析构2
最后析构22行定义的sam,来自构造函数的sam 所以是析构0


  • IsaacMoo
  • &
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
因为返回值比局部变量析构得晚。
局部变量在函数体中的语句全部执行完毕时析构。
返回值在函数调用语句执行完毕时析构。
比如这个函数调用语句:
var1 = func1(), var2 = func2();
func1的返回值要等到func2执行完毕才会析构。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回c++吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示