#include <iostream>
#include <stdlib.h>
#include <cstring>
#include <string.h> // 배열 5개만
using namespace std;
class Student
{
private:
char *student_name; //학생 이름 변수
int computer_grade;
public:
Student() {}
Student(const char *_student_name, const int _computer_grade) //이름 입력받기 위한 생성자
{
student_name = new char[strlen(_student_name) + 1]; //NULL문자 포함한 배열 선언
strcpy(student_name, _student_name); //student_name _student_name 입력
//cout << "생성자 호출" << endl;
computer_grade = _computer_grade; //성적 입력
}
~Student() {}
virtual char *getName()
{
return student_name;
}
virtual int getAverage()
{
return computer_grade;
}
virtual void setGrade(int grade)
{
cout << "컴퓨터 성적 변경!" << endl;
computer_grade = grade;
}
};
class Science : public Student //부모 클래스 상속받음
{
private:
int science_grade;
public:
Science(const char *_student_name, const int _computer_grade, int _science_grade) : Student(_student_name, _computer_grade) //과학점수 입력
{
science_grade = _science_grade;
}
~Science() {}
int getAverage()
{
return (Student::getAverage() + science_grade) / 2;
}
void setGrade(int grade)
{
cout << "과학 성적 변경!" << endl;
science_grade = grade;
}
};
class LiberalArts : public Student //부모 클래스 상속받음
{
private:
int liberalarts_grade;
public:
LiberalArts(const char *_student_name, const int _computer_grade, int _liberalarts_grade) : Student(_student_name, _computer_grade) //사회점수 입력
{
liberalarts_grade = _liberalarts_grade;
}
~LiberalArts() {}
int getAverage()
{
return (Student::getAverage() + liberalarts_grade) / 2;
}
void setGrade(int grade)
{
cout << "사회 성적 변경!" << endl;
liberalarts_grade = grade;
}
};
int main()
{
Student *student_List[5];
//Car *carList = new Car[5];
student_List[0] = new Student("짱구", 25); //부모 클래스 호출
student_List[1] = new Science("주희", 100, 50); //자식 클래스 호출
student_List[2] = new LiberalArts("김영주", 37, 61);
student_List[3] = new Science("엽기동", 100, 100);
student_List[4] = new LiberalArts("강석찬", 10, 20);
for(int i = 0; i < 5; i++) //모든 배열 출력
{
Student *p = student_List[i]; //p안에 클래스 함수 입력
cout << "이름 : " << p->getName() << endl; //각 클래스의 이름 호출
cout << "평균 : " << p->getAverage() << endl;
p->setGrade(50);
cout << "바뀐 평균 : " << p->getAverage() << endl;
cout << endl;
}
return 0;
}
'C++' 카테고리의 다른 글
C++ 정적바인딩, 동적바인딩 (0) | 2021.10.21 |
---|---|
C++ 클래스 구현, 상속, 자동차 예제 (0) | 2021.10.21 |