【问题标题】:Adding objects to a pre allocated array of objects将对象添加到预分配的对象数组
【发布时间】:2016-03-13 23:02:09
【问题描述】:
#include <iostream>

class Object {
public:
    int x;
    Object() { }
    Object(int x) {
        this->x = x;
    }
};

class SomeClass {
public:
    Object array[10];
    int n;
    SomeClass() { n = 0; }
    void insert(Object o) {
        array[n++] = o;
    }
};

int main() {
    SomeClass s;
    Object test = Object(4);
    s.insert(test);
    return 0;
}

我有这个例子,我在SomeClass 中预先分配了一个对象数组,然后在其他方法中,main 在这个例子中,我创建了另一个对象并将它添加到SomeClass 中的数组中

我认为我应该做的一件事是从array[10] 切换到指针数组,这样我只在真正需要时才创建对象。

但我的问题是,当我将“array[n++] = o”替换为新对象“o”时,最初为array[0] 分配的内存会发生什么情况?它会被取消分配吗?

【问题讨论】:

  • 您不应该使用指针数组。如果您想要一个可调整大小的数组,请使用 vector

标签: c++ memory


【解决方案1】:

不,什么都没有发生。对象的赋值运算符被调用,以替换对象。

对于这个简单的类,赋值运算符是默认运算符,它或多或少地复制对象的每个成员,一次一个。

(目前还不需要涉及移动运算符等...)

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 2018-09-06
    • 2012-07-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多