# include <iostream>
# include <string.h>
using namespace std;

class Person
{
	protected:
		char *name,*lastname;
	public:
		Person(char *n,char *l);
		const char *getName();
		const char *getLastname();
		void	details();
		~Person();
};

Person::Person(char *n,char *l)
{
	name=new char[strlen(n)+1];
	lastname=new char[strlen(l)+1];
	strcpy(name,n);
	strcpy(lastname,l);
}

const char *Person::getName()
{
	return name;
}

const char *Person::getLastname()
{
	return lastname;
}

void	Person::details()
{
	cout<<"name ="<<name<<"\t"<<
		"lastname="<<lastname<<endl;
}

Person::~Person()
{
	cout<<"deleting person ";
	details();
	delete[] name;
	delete[] lastname;
}

class Student: public Person
{
	private:
		int semester;
	public:
	    Student();
		Student(char *n,char *l,int s);
		const int getSemester();
		void	setSemester(int s);
		void	printStudent();
		~Student();
};

Student::Student()
 :Person(" "," ")
{
	semester=0;
	cout<<name<<endl;
}

Student::Student(char *n,char *l,int s)
 :Person(n,l)
{
	semester=s;
}

const int Student::getSemester()
{
	return semester;
}

void	Student::setSemester(int s)
{
	semester=s;
}

void	Student::printStudent()
{
	cout<<"Stoixeia apo person "<<endl;
	details();
	cout<<"stoixeia apo mathiti ";
	cout<<"Semester is "<<semester<<endl;
}

Student::~Student()
{
	cout<<"delete student"<<endl;
}

int main()
{
	Person *p1=new Person("Giannis","Pappas");
	Person *p2=new Person("nikos","ioannou");
	Student *s1=new Student("maria","pappa",3);
	p1->details();
	p2->details();
	s1->details();
	s1->printStudent();
	delete p1;
	delete p2;
	delete s1;
	return 0;
}
