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