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

书籍源码

开发平台:

Visual C++

  1. //【例8.7】计算学分。
  2. #include<iostream>
  3. #include<string>
  4. using namespace std;
  5. class Student{
  6. string coursename; //课程名
  7. int classhour; //学时
  8. int credit; //学分,未考虑0.5学分
  9. public:
  10. Student(){coursename="#";classhour=0;credit=0;}
  11. virtual void Calculate(){credit=classhour/16;}
  12. void SetCourse(string str,int hour){
  13. coursename=str;
  14. classhour=hour;
  15. }
  16. int GetHour(){return classhour;}
  17. void SetCredit(int cred){credit=cred;} 
  18. void Print(){cout<<coursename<<'t'<<classhour<<"学时"<<'t'<<credit<<"学分"<<endl;}
  19. };
  20. class GradeStudent:public Student{
  21. public:
  22. GradeStudent(){};
  23. void Calculate(){SetCredit(GetHour()/20);}
  24. };
  25. void Calfun(Student &ps,string str,int hour){
  26. ps.SetCourse(str,hour);
  27. ps.Calculate();
  28. ps.Print();
  29. }
  30. int main(){
  31. Student s;
  32. GradeStudent g;
  33. cout<<"本科生:";
  34. Calfun(s,"物理",80);
  35. cout<<"研究生:";
  36. Calfun(g,"物理",80);//派生类对象作为基类引用的实参,只有calculate()为虚函数才能实现动态的多态性
  37. return 0;
  38. }