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
cpp:stl:student [2020/05/28 13:14]
cpp:stl:student [2020/05/28 14:14]
gthanos
Line 1: Line 1:
 +<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)