I'm not a C++ expert either, but I don't think the ClassRoom destructor is correct. Inside the loop
you should be deleting a single Student, delete studentList[i], and only after the loop can you delete[] stdudentList.
And I think the upper limit of the loop should be numberOfStudents (without the - 1), so that i goes from 0 to (numberOfStudents - 1).