如果在模板 class 中使用动态分配的元素,我该如何解除分配或自动解除分配?

If dynamically allocated element used in templated class how can I deallocate or does it deallocate automatically?

我有这种模板class

template<class T>
class myClass
{
  public:
 .
 myClass(const T & element); 
 .
  private:
    T element;

};

并且我在 main

中使用动态分配的元素作为 T
struct Node
{
.
.
};
int main()
{
  myClass<Node*> obj(new Node);
}

如何释放 new 关键字占用的 space 还是在调用 myClass 的析构函数时自动完成?

这是 C++ 的常见问题。 看这里:https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management

CppCoreGuidelines 为您提供了处理内存的合理方法。 考虑阅读 RAII 和 Smart-Pointers(CppCoreGuidelines 中包含的所有内容)。

无需自己管理内存。使用 std::unique_ptr

template<class T>
class myClass
{
  public: 
    myClass(std::unique_ptr<T> ptr) : element(std::move(ptr)) { }; 
 
  private:
    std::unique_ptr<T> element;
};

然后像这样使用它

myClass<Node> obj(std::make_unique<Node>()); // note that I removed the *