C++析构函数,复制构造函数,默认构造函数是执行机制

直接上代码,注释里写的很清楚了!

#include <vector>
#include<iostream>

struct Exml()
{
   //
   Exml(){cout<<"Exml()"<<endl};
   //
   Exml(const Exml &)
   {
      cout<<"Exml (const Exml&)"<<endl;
   }
//
Exml & operator = (const Exml &rhe)
{
  cout<<"operator Exml(const Exml&)"<<endl;
return *this; 
}

~Exml(){cout<<"~Exml()"<<endl;}
}

void func1(Exml obj)
{
}
void func2(Exml & obj)
{
}
Exml func3(Exml & obj)
{
Exml obj;
return obj;
}
int main()
{
   Exml eobj;// 调用默认的构造函数
   func1(eobj);//调用复制构造函数,//函数执行完毕后调用Exml的析构函数撤销形参Exml对象
<span style="font-family: Arial, Helvetica, sans-serif;">func2(oebj);//形参为Exml对象的引用,无需调用复制构造函数床底实参</span>
   oebj=func3();//调用默认构造函数创建局部Exml对象,/函数返回时调用复制构造函数创建作为返回值副本的Exml对象,//然后调用析构函数撤销局部Exml对象,//然后调用复制操作符,执行完赋值后,调用析构函数撤销Exml的副本</span>
   Exml *p=new Exml();//调用默认构造函数动态创建Exml对象
   vector<Exml> evec(3);//调用默认构造函数//创建一个临时值Exml对象,//然后3此调用复制构造函数,//将临时对象复制到evec中得每个元素中,//然后调用析构函数撤销临时Exml()。delete p;//调用析构函数撤销动态创建的Exml对象return 0;//evec生命周期结束,调用三次析构函数


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值