如果构造函数抛出异常,是否会调用析构函数?

2024-03-28

寻找 C# 和 C++ 的答案。 (在 C# 中,将“析构函数”替换为“终结器”)


它适用于 C#(请参见下面的代码),但不适用于 C++。

using System;

class Test
{
    Test()
    {
        throw new Exception();
    }

    ~Test()
    {
        Console.WriteLine("Finalized");
    }

    static void Main()
    {
        try
        {
            new Test();
        }
        catch {}
        GC.Collect();
        GC.WaitForPendingFinalizers();
    }
}

这会打印“已完成”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果构造函数抛出异常,是否会调用析构函数? 的相关文章

随机推荐