c++析构函数?
为什么我这个程序刚运行就有析构函数调用,我的p3和temp对象的析构都有,为什么p1的析构函数没显示。...
为什么我这个程序刚运行就有析构函数调用,我的p3和temp对象的析构都有,为什么p1的析构函数没显示。
展开
2个回答
展开全部
这个问题我来回答一下。
首先明确一下析构函数的性质:析构函数是在对象销毁的时候调用的。
那么接下来分析一下这个代码:
1.如图1,第一个析构的是temp对象,是在调用Add函数后将temp对象销毁了,这个您已经知道啦。
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.注意对象销毁的顺序(基于栈的)。
望您采纳!!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询