C++何时调用构造函数,何时调用析构函数

在我们创建新的对象的时候,都要执行某一个类中的构造函数,而当构造函数中分配了资源之后,当我们销毁一个对象的时候需要一个相应的操作将这些资源释放出去,这就需要析构函数。

一般来说,在有基类和派生类存在时,在创建派生类类型时,会先构造基类,再构造派生类,析构顺序反之,类似于进栈出栈的过程。

遇到的情况:指针不会调用构造和析构函数在这里插入图片描述
当对指针用new在内存中开辟空间的时候会调用构造函数:在这里插入图片描述
当我们使用new为指针开辟空间,然后用delete释放掉空间会调用构造和析构函数在这里插入图片描述
当我们函数的形参是一个对象的时候,这时候会系统只会调用析构函数,而缺少形参的构造函数:在这里插入图片描述
当形参为一个对象的时候,实参也为对象,这时候系统会将实参复制一份给形参,此时系统就不会再给形参额外调用构造函数来对形参对象初始化了,所以就不会调用构造函数,但是形参被销毁的时候还是会调用析构函数!当我们函数的形参是一个引用的时候,这时候会系统不调用构造函数和析构函数:在这里插入图片描述
当形参为一个引用的时候,实参也对象,这时候系统会将形参指向实参,此时系统就不会对形参调用构造函数和析构函数!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值