模板类缓冲区析构函数C ++

时间:2019-12-12 18:23:40

标签: c++ class vector destructor

我有一个带有缓冲区类型向量的模板类Array。

template <typename T>
    class Array
    {
    protected:
        std::vector<T> buffer; 
     ......
    }

我想为此缓冲区实现析构函数~Array();。有关如何执行操作的任何想法?

2 个答案:

答案 0 :(得分:1)

默认的析构函数已经释放了向量的内存,您无需在此处定义一个。

如果要显式释放向量的内存,请在需要时尝试使用交换技术:

std::vector<T>().swap(buffer); 

答案 1 :(得分:1)

  

有什么想法吗?

这完全取决于您设计的类及其析构函数的设计。

最好的选择是在没有需要用户声明的析构函数的情况下,而是隐式生成的函数。换句话说,请尽可能遵循rule of 0

  

我要删除分配给缓冲区的内存

所有成员变量都会自动销毁。向量的析构函数会释放其内部缓冲区。此处无需自定义析构函数。