Массив в C ++ - это массив объектов, расположенных в памяти.
Так, например, в:
struct pair {
int x; int y;
};
...
pair array[10];
Каждый элемент в массиве будет иметь размер два целых.
Если вам нужен массив указателей, вы можете просто объявить его:
pair* array_of_pointers[10];
Строковые объекты имеют указатели на часть строки переменного размера. Так что они в безопасности.
На самом деле они важный урок здесь. Так же, как вы используете строковый класс, чтобы избежать чрезмерной обработки памяти, вы можете использовать векторный класс, чтобы избежать всех проблем с обработкой динамического массива.
Для случая, когда вы делаете это как упражнение. Вот несколько проблем:
newObject
должен быть выделен локально, без new
. Это сделает код правильным (так как newObject
не является указателем, а new
возвращает указатель), а также избавит вас от необходимости явной обработки памяти. (На более сложной ноте это делает исключение кода безопасным в еще одном месте)
myObject
никогда не инициализируется. И вы не используете списки инициализации в конструкторе. Конструктор должен выглядеть так:
myContainer() : numObjects(0), myObjects(NULL)
{
}
Деструкторы в коде точно такие, какими они должны быть.