throw、try和catch语句的一般语法如下:throw表达式;异常处理的执行过程如下:程序通过正常的顺序执行到达try语句块,然后执行try块内受保护的语句。对于fun语句,其捕获异常的过程是相似的。只要找到一个匹配的异常类型,后面的异常处理都将被忽略。......
2023-11-07
若在try语句块的throw语句之前定义了对象,程序在退出try语句块时,系统会自动调用对象析构函数销毁对象。
【例9.4】分析以下程序的执行结果。
解:在main函数的try块中调用f()函数,创建Two类的对象b,调用Two类的构造函数,执行f中的throw One()语句抛掷异常,自动析构对象b,由catch(One e)捕获并处理(这里仅输出异常类型)。程序执行结果如下:
进入main
在try块中调用f()
Two构造函数
f():抛掷一个One异常
Two析构函数
在catch处理器中捕获一个异常类型:异常在One类中
返回main
【例9.5】分析以下程序的执行结果。
解:上述程序中,在执行main()中的fun();语句时调用fun()函数,该函数要首先构造对象in1,调用Ins类的构造函数Ins(),并将in1入栈,然后构造对象in2,调用Ins类的构造函数Ins(intm),并将in2入栈,最后执行throw Ex();语句抛掷Ex类异常,在检测到catch(Ex e)时,展开该栈,先是对象in1出栈,执行Ins类的析构函数,再是对象in2出栈,又一次执行Ins类的析构函数。程序的执行结果如下:(www.chuimin.cn)
开始执行main()主函数.
在try块中,调用fun().
构造Ins对象1.
构造Ins对象2.
在fun()函数中抛掷Ex类异常.
析构Ins对象.
析构Ins对象.
在catch中捕获到Ex类型异常.
调用ShowReason()成员函数.
main()主函数执行完毕.
有关C++程序设计基础教程的文章
throw、try和catch语句的一般语法如下:throw表达式;异常处理的执行过程如下:程序通过正常的顺序执行到达try语句块,然后执行try块内受保护的语句。对于fun语句,其捕获异常的过程是相似的。只要找到一个匹配的异常类型,后面的异常处理都将被忽略。......
2023-11-07
析构函数被系统自动调用分两种情况。分析以下程序的执行结果。解:本程序执行结果如下:调用带参构造函数矩形s1的面积=153调用无参构造函数矩形s2的面积=0调用了析构函数!......
2023-11-07
同样,当含有子对象的类存在析构函数时,特别要注意析构函数的调用次序。析构函数的调用执行顺序与构造函数刚好相反。分析以下程序的执行结果。解:上述程序中声明了4个类,类A中含有3个子对象b1、b2、b3,分别是类B1、B2、B3的对象,其声明次序是b1、b2、b3,按照子对象构造函数和析构函数的执行次序得到以下程序执行结果:B1:ConstructorB2:ConstructorB3:ConstructorA:ConstructorA:DestructorB3:DestructorB2:DestructorB1:Destructor分析以下程序的执行结果。调用在A类中第二个定义的对象成员two的构造函数。......
2023-11-07
图2.3对象stu1和stu2实际上,类Student的所有成员函数放在公用区中,每个函数代码有一个地址,类Student的每个对象中只存放自己的数据成员值和指向公共区中对应函数的地址,也就是说,类的成员函数是共享的,如图2.4所示,这种对象的存储空间分配方式不仅节省了存储空间,而且各个对象的数据成员分别存放,互不相干。......
2023-11-07
和构造函数一样,析构函数也不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用,其顺序与执行构造函数时的顺序正好相反。最后调用基类的析构函数,多个基类则按派生类声明时列出的逆序、从右到左调用,而不是初始化列表中的次序。首先执行派生类的析构函数,然后执行派生类成员对象的析构函数,再执行基类的析构函数,最后执行基类成员对象的析构函数。......
2023-11-07
如同一个变量一样,对象从被创建到被释放为止的时间称为对象的生存期。一个对象的生存期如图2.8所示。从上看到,分配对象的内存空间和调用构造函数进行数据成员初始化是两个不同的阶段。构造函数帮助对象自动进行初始化,并且初始化的同时可以执行其他操作。......
2023-11-07
程序设计是指设计、编写和调试程序的方法与过程。由于程序是软件的本体,因此软件的质量主要通过程序的质量体现,因此,研究一种切实可行的程序设计方法至关重要。继承是面向对象程序设计方法的一个重要标志,利用继承机制可以大大提高程序的可重用性和可扩充性。......
2023-11-07
相关推荐