gpt4 book ai didi

c++ - 删除模板类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:20:59 26 4
gpt4 key购买 nike

我有一个看起来像这样的通用类:

template <class T>
class Example
{
private:
T data;
public:
Example(): data(T())
Example(T typeData): data(typeData)
~Example()

// ...
};

我对如何为这样的东西实现解构函数感到有点困惑。具体来说,由于 T 是任何类型,它可以是在堆栈上分配的内存(对于通过无参数构造函数创建的 Example 总是这种情况)或在堆上。

例如,如果客户端将 T 的类型设为 int* 并提供指向动态内存的指针,我怎么知道调用 deletedata 上,而不是如果客户端将类型设置为 int

最佳答案

最简单的答案是:不要。不要试图事后猜测用户并做他们可能没有预料到的事情。采用与标准容器相同的策略:假设 T 正确地自行清理。

如果客户端代码编写正确,它将使用 RAII 类(如智能指针)来自动和正确地管理内存和其他资源。如果不是,您就不能指望在您的提供商代码中修复它。

让您的类与 std::unique_ptrstd::shared_ptr 以及任何其他自定义 RAII 类一起工作,并让您的客户自己进行管理。毕竟,如果他们想要存储非拥有指针怎么办?

关于c++ - 删除模板类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35296907/

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