如果在c ++中从构造函数抛出异常,如何清理初始化资源

Joh*_*_sa 6 c++ constructor memory-management

前一天我在面试中遇到这个问题.所以请指导我.

如果在c ++中从构造函数抛出异常,如何清理初始化资源?

Alo*_*ave 6

诀窍是使用RAII(资源获取是初始化)来管理资源.

如果你有指针成员,那么使用智能指针而不是原始指针,一旦从构造函数抛出异常,它将自动执行清理作业.

好读:
Herb Sutter的优秀GotW文章"建筑失败"