5

和之间const_multi_array_ref的关系如下:multi_array_refmulti_array

  • multi_array_ref来源于const_multi_array_ref
  • multi_array来源于multi_arry_ref

但是, 和 的析构函数const_multi_array_ref是非multi_array_ref虚拟的。事实上,它们没有明确实现的析构函数。只有multi_array一个。这是否意味着不建议使用以下用法?

multi_array_ref<float, 2> * = new multi_array<float, 2>(extents[3][3]);

如果是这样,为什么?

4

1 回答 1

2

multi_array库类不是为动态多态而设计的。它们没有任何虚函数,因此将析构函数设为虚函数看起来也不合理。它是常见的类似 STL 的设计,multi_array_ref仅用作数据拥有和非拥有情况的统一接口适配器。

强烈不推荐您的使用示例 - 它会导致内存泄漏,因为multi_array析构函数不会在delete调用时执行。

但是multi_array通过引用或指针访问实例是安全的multi_array_ref

于 2012-08-16T10:42:27.207 回答