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;
}