This does create an array of Vector3D objects on the heap.
Each vector is created by calling the Vector3D constructor.
Put a little debugging print statement in the default constructor for Vector3D, and watch the constructor get called the same number of times as you have vectors in your array.
Example:
#include <iostream>
using namespace std;
class C {
public:
  C() { cout << "Hello default constructor here\n"; }
};
int main() {
  C* cs = new C[5];
}
Output is:
Hello default constructor here
Hello default constructor here
Hello default constructor here
Hello default constructor here
Hello default constructor here
If your class does not have a default constructor, you cannot allocate the array in one shot (thank you for the comment @Everyone), so in this case consider using a std::vector or a std::array and adding your Vector3D objects dynamically ---  or even "statically"! Example:
#include <iostream>
#include <vector>
using namespace std;
class Vector3D {
  double i, j, k;
public:
  Vector3D(double i, double j, double k): i(i), j(j), k(k) {}
};
int main() {
  vector<Vector3D> v = {
    Vector3D(3, 4, 5),
    Vector3D(6, 8, 10),
    Vector3D(7, 24, 25)
  };
  v.push_back(Vector3D(1, 2, 3));
  cout << v.size() << '\n';
}
This outputs 4.
You can also make your vector contain pointers to Vector3D objects.