c++析构函数?

为什么我这个程序刚运行就有析构函数调用,我的p3和temp对象的析构都有,为什么p1的析构函数没显示。... 为什么我这个程序刚运行就有析构函数调用,我的p3和temp对象的析构都有,为什么p1的析构函数没显示。 展开
 我来答
认真的阿三
2022-02-13 · 认真问答,十分欢迎交流
认真的阿三
采纳数:3 获赞数:1

向TA提问 私信TA
展开全部

这个问题我来回答一下。

首先明确一下析构函数的性质:析构函数是在对象销毁的时候调用的。

那么接下来分析一下这个代码:

1.如图1,第一个析构的是temp对象,是在调用Add函数后将temp对象销毁了,这个您已经知道啦。

图1 第一行执行结果

2.接下来我们看test1函数,在这个函数中您定义了两个对象p1和p3,这里需要注意,当test1函数执行完后,先销毁p3,后销毁p1,因为对象的管理是基于栈的,栈具有先入后出的特点。所以This is the end3 是p3的析构,This is the end2 是p1的析构(在Add函数中你将p1的数据成员c赋值成了2,见temp,c=2;语句)。

总结,这就是我的回答,总结知识点:1.析构函数是在对象销毁的时候执行的(可以了解一下作用域概念)。2.注意对象销毁的顺序(基于栈的)。

望您采纳!!!

电灯剑客
科技发烧友

2021-10-20 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:1.2万
采纳率:83%
帮助的人:4933万
展开全部
从图里看析构函数确实调用过三次

This is the end0 //temp
This is the end3 //p3
This is the end2 //p1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式