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

1 c++ memory

#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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Sam*_*hik 5

不,没有任何反应.调用对象的赋值运算符以替换该对象.

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

(不需要进入移动运营商......等等)