User Tools

Site Tools


cpp:stl:student
Student.hpp
#ifndef _STUDENT_HPP_
#define _STUDENT_HPP_
#include <cstring>
#include <iostream>
 
class Student {
public:
  char *name;
  int aem;
 
  Student();
  Student(const char *name, int aem);
  Student(const Student& );
  ~Student();
  friend std::ostream& operator<<(std::ostream& out, const Student & st);
  bool operator>(const Student& st) const;
  Student& operator=(const Student& st);
};
 
Student::Student(const char *name, int aem) {
  this->name = new char [strlen(name) + 1];
  strcpy(this->name, name);
  this->aem = aem;
  std::cerr << "Argu Construct : " << *this << std::endl;
}
 
Student::Student(const Student& st) {
  name = new char [strlen(st.name) + 1];
  strcpy(name, st.name);
  aem = st.aem;
  std::cerr << "Copy Construct : " << *this << std::endl;
}
 
Student::Student() {
  this->name = nullptr;
  this->aem = 0;
}
 
Student::~Student() {
  if(name != nullptr) {
    std::cerr << "Destruct: " << *this << std::endl;
    delete []name;
  }
}
 
Student& Student::operator=(const Student& st) {
  if(name != nullptr)
    delete name;
  name = new char [strlen(st.name) + 1];
  strcpy(name, st.name);
  aem = st.aem;
  std::cerr << "Copy : " << *this << std::endl;
  return *this;
}
 
std::ostream& operator<<(std::ostream& out, const Student& st) {
  if(st.name != nullptr)
    out << st.name << " " << st.aem;
  return out;
}
 
bool Student::operator>(const Student& st) const {
  if(aem > st.aem)
    return true;
  return false;
}
#endif
cpp/stl/student.txt · Last modified: 2020/05/28 13:14 (external edit)