大胖的部落格
Just a note
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks
<
2009年6月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
Algorithm(13)
(rss)
C#(13)
(rss)
C++(22)
(rss)
Design Pattern(23)
(rss)
Others(14)
(rss)
STL(9)
(rss)
Technical(2)
(rss)
UML(2)
(rss)
Win32(18)
(rss)
Reference
Windows XP command line
最新评论
1. re: 在TCL命令行中调用C函数
@Kenny
实在不好意思,时间太过久远,本人已好久没有接触TCL……
--大胖
2. re: 在TCL命令行中调用C函数
請問如何溝通array 變數
Q:1
tcl array in C
Q:2
C array in tcl
懇求指導
--Kenny
3. re: 在TCL命令行中调用C函数
谢谢!
--1232
析构函数中的异常
在有两种情况下会调用析构函数。
第一种是在正常情况下删除一个对象,例如对象超出了作用域或被显式地delete。
第二种是异常传递的堆栈辗转开解(stack-unwinding)过程中,由异常处理系统删除一个对象。
如果是第二种情况发生时,在析构函数中也抛出一个异常,则c++会调用terminate()来终止程序。例如:
class
Object
{
public
:
Object()
{cout
<<
"
Default
"
<<
endl;}
~
Object()
{
throw
exception();
cout
<<
"
Destructor
"
<<
endl;
}
}
;
void
Test()
{
Object obj;
throw
exception();
}
int
main(
int
argc,
char
*
argv[])
{
try
{
Test();
}
catch
(
)
{
}
return
0
;
}
所以为了防止terminate()被调用,并且在析构函数中完成资源释放,不能让异常传递到析构函数之外。
将可能产生异常的语句包含在try内,保证不会有异常传递到析构函数之外,并且让析构函数执行完。
上述析构函数可定义如下:
~
Object()
{
try
{
throw
exception();
}
catch
(
)
{
}
cout
<<
"
Destructor
"
<<
endl;
}
posted on 2009-05-25 16:37
大胖
阅读(217)
评论(0)
编辑
收藏
引用
所属分类:
C++
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
补码
带引用计数的智能指针(模板类)
虚基类、虚函数,对象内存分布
template
override, overload, hide
继承
基类中的虚函数
继承关系中的二义性
虚基类
C/C++关键字
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Powered by:
C++博客
Copyright © 大胖