1、类中没有指针,如果对象构造过程中出现异常,C++保证已经构造好的那一部分自动销毁。注意:这里不是调用析构方法,而是编译器在你的构造方法中插入了一些代码。
2、类中有指针,比如有a, b两个指针。a初始化完成,b抛出异常,这将导致资源泄漏。
3、注意,这种情况下,绝不会调用析构方法,因为C++只会析构已经构造完成的对象。接着思考,在堆上分配对象,把指针传出来,对指针delete,可行吗?
不可行,因为构造过程出现异常,指针是传递不出来的。外部的指针还是null。
4、思考:为什么C++只析构已经构造完成的对象?
假如析构部分构造的对象,那么析构方法该做些什么事呢?应该是析构已经构造好的那一部分,但是这要求记录哪些内容已经构造好,哪些内容没有构造好,显然,这个代价太大,因此不执行。
5、
【M10】在构造方法内阻止资源泄漏,布布扣,bubuko.com
原文:http://www.cnblogs.com/nzbbody/p/3579143.html