상속에서 동적 할당 한 것을 처리 할 때 유의할 예제.ex7-2
//===================================해더파일====================================================
#include <iostream>
using std::cout;
using std::endl;
class Person
{
protected:
int age;
char* Name;
public:
Person(){}
Person(int _age,char* _Name)
{
age = _age;
Name = new char[strlen(_Name)+1];
strcpy(Name,_Name);
}
Person(const Person& P)
{
age = P.age;
Name = new char[strlen(P.Name)+1];
strcpy(Name,P.Name);
}
int Get_age()const{
return age;
}
const char* Get_name()const{
return Name;
}
~Person()
{
delete []Name;
}
};
class Student : public Person
{
char* major;
public:
Student(int _age, char* _Name,char* _major):Person(_age,_Name)
{
major = new char[strlen(_major)+1];
strcpy(major,_major);
}
//Student(const Student& S)
//{
// age=S.age;
// Name= new char[strlen(S.Name)+1];
// strcpy(Name,S.Name);
// major = new char[strlen(S.major)+1];
// strcpy(major,S.major);
//}
Student(const Student& S):Person(S)
{
age=S.age;
Name= new char[strlen(S.Name)+1];
strcpy(Name,S.Name);
major = new char[strlen(S.major)+1];
strcpy(major,S.major);
}
~Student()
{
delete []major;
}
char *Get_major()const{
return major;
}
void showdata()
{
cout<<"age :"<<age<<endl;
cout<<"Name : "<<Get_name()<<endl;
cout<<"major :"<<Get_major()<<endl;
}
};
//=================================여기부터=cpp 파일=======================================
#include "EX7-2.h"
int main()
{
Student phg1(22,"phg","computer");
phg1.showdata();
Student phg2=phg1;
phg2.showdata();
return 0;
}