其他分享
首页 > 其他分享> > 异常变量的声明周期

异常变量的声明周期

作者:互联网

异常变量的声明周期

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

class myException
{
public:
    myException()
    {
        cout << "myException的默认构造" << endl;
    }
    ~myException()
    {
        cout << "myException的析构" << endl;
    }
    myException(const myException& e)
    {
        cout << "myException的拷贝构造" << endl;
    }
};
void doWork()
{
    throw myException();
}
void test01()
{
    try
    {
        doWork();
    }
    //catch (myException e)  //myException e, 会多开销一份数据, 最后会有两次析构
    catch (myException& e)  //myException& e, 调用的还是默认构造出来的
    //catch (myException* e)  //myException* e, 那么throw的时候要加&  throw &myException(); 后果 没等走到下面就已经释放了 catch里无法调用e里面的成员函数 即使不报错 也是指向非法空间
    {
        cout << "捕获异常" << endl;
        //delete e;//  *e 需要手动释放资源
    }
}

int main()
{
    test01();
    system("Pause");
    return 0;
}

 

标签:变量,myException,new,声明,MyException,周期
来源: https://www.cnblogs.com/yifengs/p/15184621.html