定义并实现一个学生类(Student).cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include <iostream>
  2. using namespace std;
  3. class Student {
  4. private:
  5. string name; // 学生姓名
  6. int id; // 学生学号
  7. static int count; // 班级人数
  8. const int classID; // 班级号 (常数据成员)
  9. static int idCounter; // 静态数据成员,记录当前学生学号
  10. public:
  11. // 构造函数
  12. Student(string name) : name(name), id(++idCounter), classID(1001) {
  13. ++count;
  14. }
  15. // 公有成员函数,输出学生信息
  16. void Print() const {
  17. std::cout << "名字:" << name << std::endl;
  18. std::cout << "学号:" << id << std::endl;
  19. std::cout << "班级:" << classID << std::endl;
  20. std::cout << "班级人数:" << count << std::endl;
  21. }
  22. // 友元函数声明
  23. friend void Output(Student s);
  24. };
  25. // 静态数据成员的定义和初始化
  26. int Student::count = 45;
  27. int Student::idCounter = 0;
  28. // 友元函数实现,输出学生信息
  29. void Output(Student s) {
  30. std::cout << "名字:" << s.name << std::endl;
  31. std::cout << "学号:" << s.id << std::endl;
  32. std::cout << "班级:" << s.classID << std::endl;
  33. std::cout << "班级人数:" << Student::count << std::endl;
  34. }
  35. int main() {
  36. string name1,name2;
  37. cin >> name1 >> name2;
  38. Student a(name1);
  39. Student b(name2);
  40. // a.Print();
  41. // std::cout << std::endl;
  42. // b.Print();
  43. // std::cout << std::endl;
  44. Output(a);
  45. std::cout << std::endl;
  46. Output(b);
  47. return 0;
  48. }