gpt4 book ai didi

c++ - C++ 中的构造函数和析构函数失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:05:46 24 4
gpt4 key购买 nike

我有一个关于 C++ 中失败的构造函数和失败的析构函数的问题。

我注意到当构造函数失败时,会抛出一个异常。但是在析构函数中没有抛出异常。

我的问题是

1) 如果构造函数失败,会抛出什么异常?坏分配?或其他相关的东西?在什么情况下,构造函数会失败?构建成功的部分呢?

2) 在什么情况下,析构函数会失败?如果没有抛出异常,析构函数会发生什么?编译器如何处理它?它所调用的函数的返回值是多少?

谢谢!

非常感谢任何意见!

最佳答案

  1. 如果构造函数失败,只有在实现构造函数时才会抛出异常,以便抛出异常。 (您可能需要区分内存分配和构造。使用 new 分配内存可能会失败并引发 std::bad_alloc 异常。)

  2. 一般情况下,构造函数不会失败。它只有在编写时才会失败,这样它可能会失败。如果是这样,它如何失败取决于它是如何编写的。通常,应该编写析构函数以使其不会失败,因为从析构函数中抛出异常是不安全的。 (那是因为它们可能会在堆栈展开期间被调用。)

请注意,您问题中使用的“失败”通常是指运行时失败。所以编译器与它无关。此外,构造函数和析构函数都不返回任何内容。

关于c++ - C++ 中的构造函数和析构函数失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2343191/

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