构造函数和析构函数的调用(C++ 的类中,在构造函数中调用析构函数会发生什么情况)

本文目录
C++ 的类中,在构造函数中调用析构函数会发生什么情况
析构函数主要作用就是释放资源,避免内存泄漏
如果你的类里面只用到的基本类型,如int
char
double等,系统的默认析构函数其实什么都没有做
但如果你使用了其他的类如vector,string等,系统的默认析构函数就会调用这些类对象的析构函数
如果是自己写析构函数的话,如果你的类里面分配了系统资源,如new了内存空间,打开了文件等,那么在你的析构函数中就必须释放相应的内存空间和关闭相关的文件;这样系统就会自动调用你的析构函数释放资源,避免内存泄漏
为什么构造函数和析构函数调用次数不同,分别是哪个对象调用了构造函数和析构函数
构造函数和析构函数的调用次数一定是相等的,因为你没有重写拷贝构造函数,因此没有打印出来。
你在传递对象作为参数时没有选择用地址传递,所以事实上在接收参数的函数中通过默认的拷贝构造函数构造了临时对象,即形参和实参的差别,你一共八次的析构调用,详细来说是这样:
第一三五次是xiexin::calculate()函数的形参拷贝构造的临时对象的析构,
第二四六次是display()函数的形参拷贝构造的临时对象的析构,
最后两次,才是box1和box2对象的析构,如果你重写拷贝构造函数并打印其调用,就会发现真相,快验证下吧

更多文章:
form表单制作(为什么制作的form表单会在网页显示中多出一行)
2026年10月11日 09:10
teammate(teammate,company,partner)
2026年10月11日 06:10
javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)
2026年10月11日 04:00
text函数公式(excel中round和text函数的区别是什么)
2026年10月11日 03:50
google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)
2026年10月11日 02:00
websocket整合springboot(Springboot整合Websocket遇到的坑)
2026年10月11日 01:40
drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)
2026年10月10日 19:20
xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)
2026年10月10日 17:50




