home *** CD-ROM | disk | FTP | other *** search
/ C++ for Dummies (3rd Edition) / C_FD.iso / CHAP18 / CHAP18_2.CPP < prev    next >
C/C++ Source or Header  |  1996-09-15  |  1KB  |  75 lines

  1. // Chap18_2.cpp
  2. #include <string.h>
  3. #include <iostream.h>
  4.  
  5. class Advisor
  6. {
  7. };
  8.  
  9. class Student
  10. {
  11.   public:
  12.    Student(char *pName = "no name") 
  13.    {
  14.      strncpy(name, pName, sizeof(name));
  15.         average = semesterHours = 0;
  16.    }
  17.    void addCourse(int hours, float grade)
  18.    {
  19.       average = (semesterHours * average + grade);
  20.       semesterHours += hours;
  21.       average = average / semesterHours;
  22.    }
  23.    int  hours( ) { return semesterHours;}
  24.    float gpa( )  { return average;}
  25.  
  26.    float calcTuition()
  27.    {
  28.       cout << "In Student calcTuition\n";
  29.       return 0.0F;
  30.    }
  31.  
  32.   protected:
  33.    char  name[40];
  34.    int   semesterHours;
  35.    float average;
  36. };
  37.  
  38. class GraduateStudent : public Student
  39. {
  40.   public:
  41.    GraduateStudent(char *pName,
  42.                    Advisor &adv) : Student(pName),
  43.                                    advisor(adv)
  44.    {
  45.       qualifierGrade = 0;
  46.    }
  47.  
  48.    qualifier( ) { return qualifierGrade;};
  49.  
  50.    float calcTuition()
  51.    {
  52.       cout << "In Student calcTuition\n";
  53.       return 0.0F;
  54.    }
  55.  
  56.   protected:
  57.    Advisor advisor;
  58.    int qualifierGrade;
  59. };
  60.  
  61.  
  62. void fn(Student &x)
  63. {
  64.    x.calcTuition();     //to which calcTuition() does this refer?
  65. }
  66. int main()
  67. {
  68.    Student s;
  69.    Advisor advisor;
  70.    GraduateStudent gs("No Name", advisor);
  71.    fn(s);
  72.    fn(gs);
  73.    return 0;
  74. }
  75.