cpp:stl:student

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Previous revision
Next revision Both sides next revision
cpp:stl:student [2020/05/28 13:14]
cpp:stl:student [2020/05/28 14:10]
gthanos
Line 1: Line 1:
  
 +====== Student ======
 +
 +<code cpp 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
 +</code>
cpp/stl/student.txt · Last modified: 2020/05/28 13:14 (external edit)