c++ - 每个类实例具有不同大小的数组类成员
问题描述
我想要一个包含数组成员的类,但构造函数让我设置数组成员的大小。
这是可行的吗?我不需要动态分配,因为一旦创建了类实例,数组就不需要改变大小,只是每个类实例都有不同的大小。
解决方案
尽管有一些评论表明这是不可能的,但实际上并非不可能。
当然,最简单的方法是使用间接方法并在构造期间以正常方式分配数组(在析构函数中使用a = new type[size]
和调用delete[] a
-不是- )。 delete a
但是如果由于某种原因你真的不想让数组数据与你的对象分开分配,你可以使用placement-new将你的对象构造成一个足够大的预分配缓冲区来包含你的所有元素。这避免了为您的数组单独分配,并且您仍然可以拥有动态大小。
不过,我不推荐使用这种技术,除非你真的有一个要求很高的用例。
推荐阅读
- python - 如何安装cv2?
- xml - 创建 XML 子项会添加奇怪的属性 xmlns="",我需要将其删除
- wpf - 关于 UI 元素功能使用的 WPF 和 MVVM 问题
- javascript - api.get(...).then(...).catch(...).finally 不是函数
- flutter - Flutter for web:找不到 chrome 作为连接设备。如何启用 chrome 作为连接设备开始在 web 上开发?
- apache-spark - 更新输出模式下的 Watermark 是否会清除 Spark Structured Streaming 中的存储状态?
- c# - 三向数据绑定
- python - 一种更有效的迭代多个 DataFrame 的方法
- java - 优化 IF 语句中的多个 OR 条件
- python - Bootstrap 4 Popover 不适用于 django Infinite Scroll