gpt4 book ai didi

c++ - 我们是否应该避免创建模板参数的对象

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:32 24 4
gpt4 key购买 nike

考虑以下函数模板:

template <typename T>
void init()
{
std::unique_ptr<T> ptr(new T());
//do some with it
}

函数模板旨在用于其他一些函数,如下所示:

void bar()
{
try{
init<int>();
} catch(___WHAT?___){ }
}

问题是,如果 T 的构造函数抛出异常,我不知道该怎么办。我根本不知道它能抛出什么。当然我可以写 catch(...) 但这不是很好。

那么,当我需要创建模板参数的对象时,应该怎么做呢?

最佳答案

您遇到的问题是您觉得需要处理异常。

在 C++ 中,您可以使用 RAII 解决相关问题。 init() 函数唯一应该做的就是清理它分配的资源。 T的资源已经清理完毕,init的调用者负责处理init的失败。

关于c++ - 我们是否应该避免创建模板参数的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31333757/

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