C++/상속의 이해

상속에서 동적 할당 한 것을 처리 할 때 유의할 예제.ex7-2

빛나는 미래 2012. 3. 26. 22:12

//===================================해더파일====================================================
#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;
}