Home Segments Index Top Previous Next

552: Mainline

In particular, if you arrange for the railroad_car parameter, r, to be a call-by-reference parameter, the entire box_car object is visible to the C++ mechanism that determines which capacity virtual member function to use:

Memory reserved for                      Memory for 
box_car argument                         railroad_car parameter 
 |                                        | 
 | *--------------------------------------* 
 | | 
 v v                              
*-----*  
|     | | 
|-----| | 
|     | | 
|-----| | Entire object is visible 
|     | | 
|-----| | 
|     | | 
|-----| |  
|     | | 
*-----*   

At this point, because the capacity function is a virtual function and because a version of capacity is defined in the box_car class, the box_car version is executed, causing the appropriate volume to be returned.