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

时间:2016-03-13 23:02:10

标签: 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;
}

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

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

但我的问题是,当我做{&#34; array[10]&#34;时,最初为array[0]分配的内存会发生什么。用新对象替换它&#34; o&#34;?它会被取消分配吗?

1 个答案:

答案 0 :(得分:5)

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

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

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