C++中4个默认函数的调用

构造函数:用于对象产生时给已分配的内存做初始化

拷贝构造:用已存在的对象构造出一个同类型的新的对象

等号运算符重载:用一个已存在的对象给另一个相同类型的已存在对象赋值

析构函数:释放对象所占的资源

在产生新的对象时,系统先开辟出适当的空间会,然后调用构造函数或拷贝构造函数分配资源,对象销毁时要调用析构,然后释放资源。下面一组代码可以清除看出系统调用这几个默认函数的时间

 

当main程序执行时,先调用两次构造函数产生对象t1和t2,然后进入GetObj函数中,再调用构造产生第三个对象tmp,执行tmp=rhs时调用等号运算符重载,用已存在的对象rhs给tmp赋值。当GetObj函数返回时调用拷贝构造,用tmp再构造出新的临时对象(结果图中的00C3FD64),此时程序将跳出GetObj函数,跳出之前将程序内部形成的局部对象tmp析构掉。然后程序再跳到主函数中,将GetObj函数返回值赋值给t1,这一句中调用等号运算符重载。然后按栈帧回退的方式,将此时存活的对象按照“后产生的先析构”的方式析构掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值