【问题标题】:Template class buffer destructor c++ [closed]模板类缓冲区析构函数c ++ [关闭]
【发布时间】:2020-04-06 04:54:51
【问题描述】:

我有一个模板类 Array,它有一个缓冲区类型向量。

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

我想为此缓冲区实现析构函数~Array();。关于如何做到这一点的任何想法?

【问题讨论】:

  • 在销毁时您需要做一些默认析构函数未处理的事情吗?
  • 具体怎么做?你希望你的析构函数做什么?
  • A std::vector 有一个默认析构函数,负责释放分配的内存。
  • 我要删除缓冲区分配的内存

标签: c++ class vector destructor


【解决方案1】:

默认析构函数已经在释放vector的内存,这里不需要定义。

如果您想明确释放向量的内存,请随时尝试交换技术:

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

【讨论】:

    【解决方案2】:

    关于如何做的任何想法?

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

    最好的选择是,当它做需要的事情时,根本不让用户声明析构函数,而是隐式生成的析构函数。换句话说,请尽可能关注rule of 0

    我想删除缓冲区分配的内存

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

    【讨论】:

      猜你喜欢
      • 2014-12-10
      • 2012-03-13
      • 2023-03-23
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多