构造函数中抛出异常会发生什么?

曾有人问了我个问题:如果在构造函数中抛出异常会怎么样?

现在可以回答了。

构造函数中抛出异常的主要问题是:当有多个资源分配时,如果出现异常,如何释放已经成功分配的资源。

下面是TCPL中推荐的一种方法:基本思想是将资源封装在对象中,然后将该对象以成员变量的形式聚合入你的类中。这个封装类在其析构函数中释放资源。这样,当你的类的构造函数中出现异常后,编译器会调用封装类的对象的析构函数,释放资源。

Continue reading “构造函数中抛出异常会发生什么?”

Scroll to top