将对象添加到预先分配的对象数组中

Adding objects to a pre allocated array of objects

本文关键字:对象 数组 分配 添加      更新时间:2023-10-16
#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]的内存会发生什么?它会被取消分配吗?

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

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

(目前还不需要进入移动运算符等)