Ex8_6_1.cpp
上传用户:wuzhousb
上传日期:2022-07-12
资源大小:380k
文件大小:1k
源码类别:

书籍源码

开发平台:

Visual C++

  1. //【例8.6】计算学分。可由本科生类派生出研究生类,但它们各自的从课程学时数折算为学分数的
  2. //算法是不同的,本科生是16个学时一学分,而研究生是20个学时一学分。采用保护成员!
  3. #include<iostream>
  4. #include<string>
  5. using namespace std;
  6. class Student{
  7. protected:                      //采用保护成员,在派生类中可以直接访问
  8. string coursename; //课程名
  9. int classhour; //学时
  10. int credit; //学分,未考虑0.5学分
  11. public:
  12. Student(){coursename="#";classhour=0;credit=0;}
  13. virtual void Calculate(){credit=classhour/16;}
  14. void SetCourse(string str,int hour){
  15. coursename=str;
  16. classhour=hour;
  17. }
  18. void Print(){cout<<coursename<<'t'<<classhour<<"学时"<<'t'<<credit<<"学分"<<endl;}
  19. };
  20. class GradeStudent:public Student{
  21. public:
  22. GradeStudent(){};
  23. void Calculate(){credit=classhour/20;}
  24. };
  25. int main(){
  26. Student s,*ps;
  27. GradeStudent g;
  28. s.SetCourse("物理",80);
  29. s.Calculate();
  30. g.SetCourse("物理",80);
  31. g.Calculate();
  32. cout<<"本科生:"<<'t';
  33. s.Print();
  34. cout<<"研究生:"<<'t';
  35. g.Print();
  36. s.SetCourse("数学",160);
  37. g.SetCourse("数学",160);
  38. ps=&s;
  39. ps->Calculate();
  40. cout<<"本科生:"<<'t';
  41. ps->Print();
  42. ps=&g;
  43. ps->Calculate();
  44. cout<<"研究生:"<<'t';
  45. ps->Print();
  46. return 0;
  47. }