// Fig. 13.5: fig13_05.cpp // Aiming base-class and derived-class pointers at base-class // and derived-class objects, respectively. #include using std::cout; using std::endl; using std::fixed; #include using std::setprecision; // include class definitions #include "CommissionEmployee.h" #include "BasePlusCommissionEmployee.h" int main() { // create base-class object CommissionEmployee commissionEmployee( "Sue", "Jones", "222-22-2222", 10000, .06 ); // create base-class pointer CommissionEmployee *commissionEmployeePtr = 0; // create derived-class object BasePlusCommissionEmployee basePlusCommissionEmployee( "Bob", "Lewis", "333-33-3333", 5000, .04, 300 ); // create derived-class pointer BasePlusCommissionEmployee *basePlusCommissionEmployeePtr = 0; // set floating-point output formatting cout << fixed << setprecision( 2 ); // output objects commissionEmployee and basePlusCommissionEmployee cout << "Print base-class and derived-class objects:\n\n"; commissionEmployee.print(); // invokes base-class print cout << "\n\n"; basePlusCommissionEmployee.print(); // invokes derived-class print // aim base-class pointer at base-class object and print commissionEmployeePtr = &commissionEmployee; // perfectly natural cout << "\n\n\nCalling print with base-class pointer to " << "\nbase-class object invokes base-class print function:\n\n"; commissionEmployeePtr->print(); // invokes base-class print // aim derived-class pointer at derived-class object and print basePlusCommissionEmployeePtr = &basePlusCommissionEmployee; // natural cout << "\n\n\nCalling print with derived-class pointer to " << "\nderived-class object invokes derived-class " << "print function:\n\n"; basePlusCommissionEmployeePtr->print(); // invokes derived-class print // aim base-class pointer at derived-class object and print commissionEmployeePtr = &basePlusCommissionEmployee; cout << "\n\n\nCalling print with base-class pointer to " << "derived-class object\ninvokes base-class print " << "function on that derived-class object:\n\n"; commissionEmployeePtr->print(); // invokes base-class print cout << endl; return 0; } // end main /************************************************************************** * (C) Copyright 1992-2005 by Deitel & Associates, Inc. and * * Pearson Education, Inc. All Rights Reserved. * * * * DISCLAIMER: The authors and publisher of this book have used their * * best efforts in preparing the book. These efforts include the * * development, research, and testing of the theories and programs * * to determine their effectiveness. The authors and publisher make * * no warranty of any kind, expressed or implied, with regard to these * * programs or to the documentation contained in these books. The authors * * and publisher shall not be liable in any event for incidental or * * consequential damages in connection with, or arising out of, the * * furnishing, performance, or use of these programs. * **************************************************************************/