#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
//异常的生命周期
//由于没有调用异常的析构,说明抛出堆区异常导致内存泄露
//除非在捕获后再delete
//异常使用严格的类型检查
//使用别名来接避免空间浪费
class Base
{
public:
virtual void printError(){}
};
class NullPointerex:public Base
{
public:
virtual void printError() override
{
cout<<"null异常"<<endl;
}
~NullPointerex()
{
cout<<"null析构"<<endl;
}
};
class dd:public Base
{
public:
virtual void printError() override
{
cout<<"dd异常"<<endl;
}
~dd()
{
cout<<"dd析构"<<endl;
}
};
int main()
{
try
{
//抛出匿名对象
throw dd();
}
catch (Base& ex)
{
ex.printError();
}
}
异常的生命周期
最新推荐文章于 2021-05-28 14:16:30 发布