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)