И так, нашел несколько способов:
1. Если компилятор поддерживает стандарт C++ 2011
Test *objPtr = new Test[COUNT_OBJ] {5, 6, 7, 8};
2. Реализация того, что было сказано
GavriKos Test *objPtr = (Test*)calloc(COUNT_OBJ, sizeof(Test));
memset(objPtr, 0, COUNT_OBJ * sizeof(Test));
for (int i = 0; i < COUNT_OBJ; ++i) objPtr[i].put_k(i + 5);
Этот вариант нужно использовать с осторожностью, т.к. память выделяется но не вызываются конструктор и деструктор объекта.
3. Вариант, представленный
Rsa97 в комментариях
Test **objPtr = new Test*[COUNT_OBJ];
for (int i = 0; i < COUNT_OBJ; ++i) objPtr[i] = new Test(i + 5);
4. На мой взгляд, самая удачная реализация с использованием
Placement new. На данный способ указал
Игорь Иванов Test *objPtr = static_cast<Test*>(operator new[] (COUNT_OBJ * sizeof(Test)));
for (int i = 0; i < COUNT_OBJ; ++i) new (objPtr + i) Test(i + 5);