User Tools

Site Tools


cpp:templates

Templates

Στα παραδείγματα που ακολουθούν χρησιμοποιούμε τη βοηθητική κλάση Student που δίνεται παρακάτω:

Student.hpp
#ifndef _STUDENT_HPP_
#define _STUDENT_HPP_
#include<cstring>
 
class Student {
  char *name;
  int aem;
 
public:
  Student(const char *name, int aem);
  Student();
  Student(const Student& );
  Student(const Student* );
  ~Student();
  char *getName() const;
  int getAEM() const;
  void setName(const char *name);
  void setAEM(int aem);
  friend std::ostream& operator<<(std::ostream& out, const Student & st);
  bool operator>(const Student& st) const;
  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;
}
 
Student::Student(const Student& st) {
  name = new char [strlen(st.name) + 1];
  strcpy(name, st.name);
  aem = st.aem;
}
 
Student::Student(const Student* st) {
  name = new char [strlen(st->name) + 1];
  strcpy(name, st->name);
  aem = st->aem;
}
 
Student::Student() {
  this->name = nullptr;
  this->aem = 0;
}
 
Student::~Student() {
  if(name != nullptr)
    delete []name;
}
 
char* Student::getName() const {
  return name;
}
 
int Student::getAEM() const {
  return aem;
}
 
void Student::setName(const char *name) {
  if(this->name != nullptr)
    delete this->name;
  this->name = new char [strlen(name) + 1];
  strcpy(this->name, name);
}
 
void Student::setAEM(int aem) {
  this->aem = aem;
}
 
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;
  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;
}
 
bool Student::operator<(const Student& st) const {
  if(aem < st.aem)
    return true;
  return false;
}
#endif
cpp/templates.txt · Last modified: 2020/05/30 17:45 (external edit)