面试真题

C++ · 中等 · 百度

构造函数抛出异常的问题

中等 C++ 🎤 百度
参考答案
结论:构造函数抛异常表示对象创建失败,C++会逆序析构已构造的基类与成员,但对象本身不会调用析构。要点:1)栈对象:编译器自动清理已初始化成员(如string);2)堆对象:new失败不返回指针,但构造函数体内裸资源分配(如先new后抛异常)会泄漏;3)未完全构造对象不调用析构函数;4)推荐RAII,成员用智能指针(unique_ptr)或容器保证异常安全。示例:构造中文件打开失败抛异常,用fstream成员可自动关闭。
题目整理自公开面经,答案由校招宝自研生成,仅供参考