2008. 8. 28. 15:52

c++ . 상속-1 . inheritance

--------------------------------------------------------------------------------------
human.h
--------------------------------------------------------------------------------------

#ifndef _HUMAN_H_

#define _HUMAN_H_

class Human
{
public:
 void SetHuman(char *sN, int _sage);
 const char* GetName()const ;
 int GetAge() const;
protected:
 
private:
 char name[20];
 int age;
};

class Student:public Human
{
public:
 void SetStudent(char *pN, int _age, int _id, int _score);
 void ShowStudent() const;
private:
 int id;
 int score;
};

#endif



--------------------------------------------------------------------------------------
human.cpp
--------------------------------------------------------------------------------------
#include<iostream>
#include"human.h"

using std::cout;
using std::endl;

void Student::SetStudent(char *pN, int _age, int _id, int _score)
{
 //strcpy(name,pN);
 //age=_age;
 SetHuman(pN,_age);
 id=_id;
 score=_score;  
}
//상수화된 함수에서는 일반함수의 호출이 불가능
//상수화된 함수만 호출 할 수 있다.
void Student::ShowStudent()const
{
 cout<<GetName()<<"\t"<<GetAge()<<"\t"<<id<<"\t"<<score<<endl;
}


void Human::SetHuman(char *sN, int _sage)
{
 strcpy(name,sN);
 age=_sage;
}
//상수화된 함수에서는 멤버 변수의 주소 리턴이 불가능
//포인터가 가리키는 값을 상수화 시켜서 리턴하면 가능
const char* Human::GetName()const
{
 return name;
}
int Human::GetAge()const
{
 return age;
};


--------------------------------------------------------------------------------------
main.cpp
--------------------------------------------------------------------------------------
#include <iostream>
#include"human.h"
using std::cout;
using std::endl;
 
/************************************************
    다음과 같은 클래스를 디자인해보자.
 
    1. Human클래스
 
       - protected 멤버변수 : 이름, 나이       
         
    2. Student클래스 : Human클래스 상속
   
       - private 멤버변수 : 학번, 점수         
       - public 멤버함수 : SetStudent - 이름, 나이, 학번, 점수 초기화                         
                           ShowStudent - 이름, 나이, 학번, 점수 출력                         
     
    3. 파일분할하여 프로그램을 작성한다.
************************************************/
 

int main()
{
    Student s1, s2, s3; //객체생성
    s1.SetStudent("김수현", 25, 1111, 100); //초기화 함수 호출
    s2.SetStudent("장동건", 27, 1112, 90);
    s3.SetStudent("김태희", 32, 1113, 50);
   
    s1.ShowStudent(); //출력함수 호출
    s2.ShowStudent();
    s3.ShowStudent();
    return 0;
}