现在的位置: 首页 > 综合 > 正文

关于C++异常抛出指针问题的探讨

2013年10月02日 ⁄ 综合 ⁄ 共 252字 ⁄ 字号 评论关闭
在C++中,抛出的异常如果是一个对象,系统会将这个对象复制一份向外抛出。
try
{
exception e;
throw e;
}

catch(exception& e){}

注意,抛出的e和catch到的e并不是同一个e,而是系统自动复制的一份对象。
对指针来说,情况有所不同。
try
{

exception* e = new exception();

throw e;
}

catch(exception* e){delete e;}

两个指针指向的对象是同一个对象。如果将这个对象转换成一个栈对象就会出现问题,如果超出生命范围,对象就会被析构。

抱歉!评论已关闭.