异性对象声明周期



/*
1.throw的异常是有类型的,可以是数字,字符串,类对象。
2.throw的异常是有类型的,catch需严格匹配异常类型
*/


# include <iostream>
# include <cstring>


using namespace std;


void func01()
{
throw 1;//抛出int 类型异常
}


void func02()
{
throw "exception";//抛出char*类型
}


class MyException
{
public:
MyException()
{
cout << "MyException()..." << endl;

}
MyException(const MyException& another)
{
cout << "MyException(const MyException& another)..." << endl;
}

~MyException()
{
cout << "~MyException()..." << endl;
}


};


void func()
{
# if 0
//普通和引用元素
throw MyException();//创建匿名对象,调用构造函数
# endif
#if 1
//指针
//throw &(MyException());//这样会提前析构掉
throw new MyException();//所以要控制它的生命周期
# endif
}


void test01()
{
//普通类型元素 引用 指针
//普通元素 catch处理完之后就析构
//引用的话 不用调用拷贝构造 
//异常对象catch处理完之后就析构
//指针会提前析构掉
try
{
func();
}
#if 0
//第一种普通类型元素
catch(MyException e)
{
cout << "异常捕获!" << endl;
}
# endif
# if 0
//引用
catch(MyException &e)
{
cout << "异常捕获!" << endl;
}
# endif
# if 01
//指针
//指针会提前析构掉
catch(MyException *e)
{
cout << "异常捕获!" << endl;
delete e;
}
# endif
}


int main(int argc, char *argv[])
{
test01();
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值