Когда вы объявляете Y_list
, вы получаете единственную переменную с неопределенным значением в ней:
Y_list
+-------+
| |
+-------+
Когда вы присваиваете ей new[]
, она указывает на то, что new[]
выделено, чтов данном случае это массив указателей:
Y_list array
+-------+ +-------+
| o---+---->| |
+-------+ +-------+
| |
+-------+
| |
+-------+
| |
+-------+
| |
+-------+
На данный момент у вас еще нет объектов YInterface
.У вас просто есть место, предназначенное для хранения указателей , если они когда-либо существуют.
Наконец, вы присваиваете значение одному из элементов Y_list[i] = new AnotherClass
.Это когда YInterface
потомок существует, но у вас пока есть только один.Запустите этот код в цикле, и вы получите несколько экземпляров.Но у вас все еще есть только один массив и один указатель на этот массив.
Y_list array AnotherClass
+-------+ +-------+ +-------+
| o---+---->| o---+---->| |
+-------+ +-------+ | |
| | | |
+-------+ | |
| | | |
+-------+ +-------+
| |
+-------+
| |
+-------+
Чтобы освободить все это, не забудьте иметь один оператор delete
для каждого оператора new
и один delete[]
за каждый new[]
:
delete Y_list[i];
delete[] Y_list;