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

来源:互联网 发布:淘宝关键字优化 编辑:程序博客网 时间:2024/05/17 02:49
在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;}

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