#include <iostream.h>
#include <string.h> 
class railroad_car {
  public: char *serial_number;
          // Constructors:
          railroad_car ( ) {++counter;}
          railroad_car (char *input_buffer) {
            // Keep track of the number:
            ++counter;
            // Create new array just long enough:
            serial_number = new char[strlen(input_buffer) + 1];
            // Copy string into new array:
            strcpy (serial_number, input_buffer);
          }
          // Destructor:
          virtual ~railroad_car ( ) {
             cout << "Destroying a railroad car; "
                  << --counter << " remain." << endl;
             delete [ ] serial_number;
          }
          // Other:
          virtual char* short_name ( ) {return "rrc";}
          virtual double capacity ( ) {return 0.0;}
  private: static int counter;  ///
};
int railroad_car::counter = 0;  ///
railroad_car *train[100];
main ( ) {
  // Declare various integer variables:
  int n, car_count;
  for (car_count = 0; car_count < 5; ++car_count) 
    train[car_count] = new railroad_car;
  for (n = 0; n < car_count; ++n) 
    delete train[n];
}
