If I have a class with an array of pointers to another class Vehicle :
class List {
public:
//stuff goes here
private:
Vehicle ** vehicles;
}
If I now write the destructor of the class List
, do I manually iterate over the array (I know how many items are in the array) and delete
every pointer to a vehicle, or will C++ automatically call the destructors of all the Vehicles in the array?
(Like it does if there's a private string/... in the class or if it would be a STL container of Vehicle pointers)
EDIT:
I forgot about delete [] vehicles
, but if I would do that, would it also delete the memory used by all the vehicles in the array, or would it just delete the memory used by the pointers?
You have to delete all the entries in the array AND delete the array. There are methods in C++ (STL) to avoid this: use a vector, so you don't have to delete the array. Use scoped_ptr/shared_ptr per Vehicle, so you don't have to delete the vehicles.