Home Segments Index Top Previous Next

676: Mainline

To define your own copy constructor for the railroad_car class, you proceed as follows:

class railroad_car {
  public: char *serial_number;
          // Constructors:
          railroad_car ( ) { }
          railroad_car (char *input_buffer) {
            // 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 ( ) {
            delete [ ] serial_number;
          }
          // Other:
          virtual char* short_name ( ) {return "rrc";}
          virtual double capacity ( ) {return 0.0;}
  private:                                                   
          // Never-to-be-called copy-constructor prototype:  
          railroad_car (railroad_car&);                      
}; 

Note that it is enough to provide a function prototype; inasmuch as the function is never to be called, there is no need to provide a body.

It is also enough to provide a never-to-be-called copy-constructor function prototype in only the topmost class of every class hierarchy, because whenever any object in the class is copied, the topmost copy constructor has to be called.