首页 > 解决方案 > 每个类实例具有不同大小的数组类成员

问题描述

我想要一个包含数组成员的类,但构造函数让我设置数组成员的大小。

这是可行的吗?我不需要动态分配,因为一旦创建了类实例,数组就不需要改变大小,只是每个类实例都有不同的大小。

标签: c++arraysclass

解决方案


尽管有一些评论表明这是不可能的,但实际上并非不可能。

当然,最简单的方法是使用间接方法并在构造期间以正常方式分配数组(在析构函数中使用a = new type[size]和调用delete[] a-不是- )。 delete a

但是如果由于某种原因你真的不想让数组数据与你的对象分开分配,你可以使用placement-new将你的对象构造成一个足够大的预分配缓冲区来包含你的所有元素。这避免了为您的数组单独分配,并且您仍然可以拥有动态大小。

不过,我不推荐使用这种技术,除非你真的有一个要求很高的用例。


推荐阅读