例如:
try{
    CSon* son=new CSon;
            return 0; //函数返回,但是若返回则无法销毁
}
        catch(...){
        //处理异常 
        }
        delete son;我想实现一个类似的结构,保证一定会销毁对象
try{
    CSon* son=new CSon;
            return 0;
}
        catch(...){
            //处理异常 
         }
        finally{
            delete son;
        }
注意不是用__try __finally,因为__try...__finally的结构中不支持创建对象与销毁对象的语法。请指点一下上面的结构在VC6.0里如何实现,谢谢!

解决方案 »

  1.   

    try catch是对异常判断用的,对这个对象的销毁判断没必要这么做吧
      

  2.   

    据MSDN所描述,VC2002以后版本new才会抛出异常。
    new有自己的异常处理机制,如果不成功会返回0.如果要自己捕获异常并处理,可以使用_set_new_handler。
      

  3.   

    只能是try...catch,可以把delete放在catch里面。
      

  4.   

       try...catch 是捕捉异常的函数,视乎不应该用来销毁对象
      

  5.   


    // 或者son用智能指针,就没有这么多的困扰了
    try

        CSon* son=new CSon; 
        delete son; 

        
    catch(...)

        delete son;
    }return 0; 
      

  6.   

    建议楼主尝试使用智能指针
    try

        CSon* son=new CSon; 
     } 
        
    catch(...)

        delete son;
        return 0; 
    }
    delete son; 
    return 0;
      

  7.   

    这种最好不要用异常捕获咯
    CSon* son = NULL:
    son = new CSon;if(son == NULL)
    {
        return -1;
    }...//做你的事
    delete son;
      

  8.   

    可以用智能指针(auto_ptr)来自动delete;
      

  9.   

    如果都是手动处理的话,看来也只能多几句delete代码了。再看看的我再结贴,看还有什么好方法没有。先谢谢大家