关于C++中>问题,刚学,不明白,特来求救
#include <iostream>
using namespace std;
class Exception
{
public:
Exception()
{
cout<<"执行构造函数..."<<endl;
}
~Exception()
{
cout<<"执行析构函数..."<<endl;
}
void Display()
{
cout<<"Exception类异常!";
}
};
void ExcpFun()
{
cout<<"在Excpfun函数中触发Exception类异常!"<<endl;
cout<<"========================3========================="<<endl;
throw Exception();
}
void main()
{
cout<<"进入main函数"<<endl;
Exception Excp;
try
{
cout<<"在try模块中,调用ExcpFun函数"<<endl;
ExcpFun();
}
catch(Exception E)
{
cout<<"=========================1========================"<<endl;
cout<<"在catch块中捕获到Exception类异常:"<<endl;
E.Display();
cout<<endl;
cout<<"=========================2========================"<<endl;
}
catch(char* str)
{
cout<<"捕获到其他类型异常:"<<str<<endl;
}
cout<<"异常已被处理!"<<endl;
}
运行结果:
进入main函数
执行构造函数...
在try模块中,调用ExcpFun函数
在Excpfun函数中触发Exception类异常!
========================3=========================
执行构造函数... //此处为何有构造,而又马上析构?
执行析构函数...
=========================1========================
在catch块中捕获到Exception类异常:
Exception类异常!
=========================2========================
执行析构函数... //此处为何有两次析构?
执行析构函数...
异常已被处理!
执行析构函数...
...全文
相关推荐
C++自动析构时的顺序问题
主要介绍了C++自动析构时的顺序,通过实例代码给大家讲解了C++ 构造与析构的执行顺序,代码简单易懂,非常不错对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
派生类的构造与析构_派生类的构造与析构_
派生类的构造与析构派生类的构造派生类的构造与派生类的构造与析构析构与析构派生类的构造与析构
C++构造函数和析构函数顺序
构造函数 先看看构造函数的调用顺序规则,只要我们在平时编程的时候遵守这种约定,任何关于构造函数的调用问题都能解决;构造函数的调用顺序总是如下: 1.基类构造函数。如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现的顺序,而不是它们在成员初始化表中的顺序。 2.成员类对象构造函数。如果有多个成员类对象则构造函数的调用顺序是对象在类中被声明的顺序,而不是它们出现在成员初始化表中的顺序。 3.派生类构造函数。 析构函数 析构函数的调用顺序与构造函数的调用顺序正好相反,将上面3个点反过来用可以了,首先调用派生类的析构函数;其次再调用成员类对象的析构函数;后调
C++构造和析构的多态
C++的多态是通过虚表指针来实现的。但是在构造和析构函数中调用虚函数,情况如何呢?是否还能实现多态呢?本文档从内存角度揭示了这其中的多态实现过程。
C++的虚析构详解及实例代码
主要介绍了C++的虚析构详解及实例代码的相关资料,需要的朋友可以参考下


