2016-03-13 5 views
1
#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[0], когда я делаю «array[n++] = o», заменяя его новым объектом «o»? он получает выделение?

+0

Нельзя использовать массив указателей. Используйте «вектор», если вы хотите изменить размер массива. –

ответ

5

Нет, ничего не происходит. Оператор присваивания объекта вызывается, чтобы заменить объект.

Для этого простого класса оператор присваивания является оператором по умолчанию, который более или менее копирует каждый из членов объекта по одному за раз.

(Не нужно вводить в действие операторы и т. Д., Пока еще)

Смежные вопросы