关于C++中>问题,刚学,不明白,特来求救

yangleiabc yangleiabc 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

#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++ 构造与析构的执行顺序,代码简单易懂,非常不错对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

weixin_38551749

派生类的构造与析构_派生类的构造与析构_

派生类的构造与析构派生类的构造派生类的构造与派生类的构造与析构析构与析构派生类的构造与析构

心若悬河

C++构造函数和析构函数顺序

构造函数   先看看构造函数的调用顺序规则,只要我们在平时编程的时候遵守这种约定,任何关于构造函数的调用问题都能解决;构造函数的调用顺序总是如下:   1.基类构造函数。如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现的顺序,而不是它们在成员初始化表中的顺序。   2.成员类对象构造函数。如果有多个成员类对象则构造函数的调用顺序是对象在类中被声明的顺序,而不是它们出现在成员初始化表中的顺序。   3.派生类构造函数。   析构函数   析构函数的调用顺序与构造函数的调用顺序正好相反,将上面3个点反过来用可以了,首先调用派生类的析构函数;其次再调用成员类对象的析构函数;后调

weixin_38600696

C++构造和析构的多态

C++的多态是通过虚表指针来实现的。但是在构造和析构函数中调用虚函数,情况如何呢?是否还能实现多态呢?本文档从内存角度揭示了这其中的多态实现过程。

gongwen1984

C++的虚析构详解及实例代码

主要介绍了C++的虚析构详解及实例代码的相关资料,需要的朋友可以参考下

weixin_38741317
评论 1
收藏 已收藏
分享
返回顶部
yangleiabc
C++ 语言 65,214 成员 250,514 内容