topical media & game development

talk show tell print


? / basic-program-code-09-Ex9-11-Ex9-11.c

  // Ex9_11.cpp
  // Using an abstract class with multiple levels of inheritance
  include <Box.h>                 // For CBox and CContainer
  include <Can.h>                 // For CCan (and CContainer)
  include <GlassBox.h>            // For CGlassBox (and CBox and CContainer)
  include <iostream>              // For stream I/O
  using std::cout;
  using std::endl;
  const double PI = 3.14159265;                // Global definition for PI
  int main()
    // Pointer to abstract base class initialized with CBox object address
    CContainer* pC1 = new CBox(2.0, 3.0, 4.0);
    CCan myCan(6.5, 3.0);                // Define CCan object
    CGlassBox myGlassBox(2.0, 3.0, 4.0); // Define CGlassBox object
    pC1->ShowVolume();                   // Output the volume of CBox
    delete pC1;                          // Now clean up the free store
    // initialized with address of CCan object
    pC1 = &myCan;                        // Put myCan address in pointer
    pC1->ShowVolume();                   // Output the volume of CCan
    pC1 = &myGlassBox;                   // Put myGlassBox address in pointer
    pC1->ShowVolume();                   // Output the volume of CGlassBox
     cout << endl;
     return 0;

(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.