User Tools

Site Tools


cpp:templates

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
cpp:templates [2019/05/14 10:24]
gthanos
cpp:templates [2020/05/30 17:45]
Line 1: Line 1:
-====== Templates ====== 
  
-  - [[cpp::function_templates| Templates συναρτήσεων]] 
-  - [[cpp::class_templates| Templates κλάσεων]] 
-  - [[cpp::class_templates_specialization| Εξειδίκευση ενός template]] 
- 
-Στα παραδείγματα που ακολουθούν χρησιμοποιούμε τη βοηθητική κλάση **Student** που δίνεται παρακάτω: 
- 
-<code cpp 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; 
-  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; 
-} 
-#endif 
-</code> 
cpp/templates.txt · Last modified: 2020/05/30 17:45 (external edit)