1
0

studentc.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // studentc.h -- defining a Student class using containment
  2. #ifndef STUDENTC_H_
  3. #define STUDENTC_H_
  4. #include <iostream>
  5. #include <string>
  6. #include <valarray>
  7. class Student
  8. {
  9. private:
  10. typedef std::valarray<double> ArrayDb;
  11. std::string name; // contained object
  12. ArrayDb scores; // contained object
  13. // private method for scores output
  14. std::ostream & arr_out(std::ostream & os) const;
  15. public:
  16. Student() : name("Null Student"), scores() {}
  17. explicit Student(const std::string & s)
  18. : name(s), scores() {}
  19. explicit Student(int n) : name("Nully"), scores(n) {}
  20. Student(const std::string & s, int n)
  21. : name(s), scores(n) {}
  22. Student(const std::string & s, const ArrayDb & a)
  23. : name(s), scores(a) {}
  24. Student(const char * str, const double * pd, int n)
  25. : name(str), scores(pd, n) {}
  26. ~Student() {}
  27. double Average() const;
  28. const std::string & Name() const;
  29. double & operator[](int i);
  30. double operator[](int i) const;
  31. // friends
  32. // input
  33. friend std::istream & operator>>(std::istream & is,
  34. Student & stu); // 1 word
  35. friend std::istream & getline(std::istream & is,
  36. Student & stu); // 1 line
  37. // output
  38. friend std::ostream & operator<<(std::ostream & os,
  39. const Student & stu);
  40. };
  41. #endif