#include #include #include class student { public: student(const std::string& first_name, const std::string& last_name) : first_name_{first_name} , last_name_{last_name} , year_{1} {} student& add_grade(double grade) { grades_.push_back(grade); return *this; } friend std::ostream& operator<<(std::ostream& os, const student& s); private: std::string first_name_; std::string last_name_; int year_; std::vector grades_; }; std::ostream& operator<<(std::ostream& os, const student& s) { os << s.first_name_ << ' ' << s.last_name_ << " (" << s.year_ << "):"; for (auto x : s.grades_) { os << ' ' << x; } return os; } int main() { student s{"Jan", "Kowalski"}; double grade; while (std::cin >> grade) { s.add_grade(grade); } std::cout << s << std::endl; } // Uwaga: // std::cout << s // oznacza: // operator<<(std::cout, s)