class Student           
{
  public:
      // Constructor (non-default)
    Student(const char * login, int age, int year, float GPA);

      // Explicit (not compiler-generated) copy constructor
    Student(const Student& student);

      // Explicit (not compiler-generated) assignment operator
    Student& operator=(const Student& student);

      // Destructor (not compiler-generated)
    ~Student();

      // Mutators (settors) are not const
    void set_login(const char* login);
    void set_age(int age);
    void set_year(int year);
    void set_GPA(float GPA);

      // Accessor (gettors) are const
    int get_age() const;
    int get_year() const;
    float get_GPA() const;
    const char *get_login() const;

      // Nothing will be modified by display
    void display() const;

  private:
    char *login_; 
    int age_;
    int year_;
    float GPA_;

      // Called by copy constructor and assignment operator
    void copy_data(const Student& rhs);
};