gpt4 book ai didi

c++ - 为什么 std::exception 析构函数不是 noexcept

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:52 27 4
gpt4 key购买 nike

<分区>

destructor C++11 的 std::exception基类不是 noexcept,因此可能(理论上)抛出异常,从而放宽对其所有派生类(包括 std::bad_alloc std::runtime_error).然而,C++98 std::exception 的析构函数有一个 throw() 异常规范,表明它不允许抛出异常。为什么不同?为什么现在允许抛出异常?考虑到 std::exception constructors,该权限特别奇怪现在是 noexcept:您可以安全地构造这样一个对象,但不能安全地销毁它:与正常行为相反。

让异常类的析构函数抛出异常通常是灾难性的。什么会导致 std::exception::~exception 抛出异常?

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com