티스토리 뷰
상속은 코드의 재활용이 절대 아니다.
코드의 재활용이라고 생각하지말자.
상속을 제대로 사용하면 매우 우아한 코드를 짤 수 있지만,,, 이도저도아니게 사용한다면 오히려 독이 된다.
"Person 객체 <---- UnivStudent 객체"
UnivStudent는 Person객체를 상속한다.
#include <iostream>
using namespace std;
class Person {
private:
int age;
char name[50];
public:
Person(int myage, char * myname) : age(myage) {
strcpy(name, myname);
}
void WhatYourName() const {
cout << "My name is " << name << endl;
}
void HowOldAreYou() const {
cout << "I'm " << age << " years old" << endl;
}
};
class UnivStudent : public Person { //Person 클래스를 Public 상속함.
private:
char major[50];
public:
UnivStudent(char * myname, int myage, char* mymajor) :Person(myage, myname) { //생성자에서 부모의 인자도 모두 받음. 하지만 보다시피 이니셜라이져를 통하여 부모의 생성자를 호출하여 초기화를 진행함. 즉, 자식의 생성자 안에서 부모의 생성자를 호출하는 식으로 생성자를 구성함.
strcpy(major, mymajor);
}
void WhoAreYou() const {
WhatYourName(); //Person 클래스의 멤버함수
HowOldAreYou(); //Person 클래스의 멤버함수
cout << "My major is " << major << endl;
}
};
int main () {
UnivStudent a_student("Steve", 22, "Computer Engineering");
a_student.WhoAreYou();
return 0;
}
/*
Person UnivStudent
상위 클래스 하위 클래스
기초(Base) 클래스 유도(Derived) 클래스
슈퍼(super) 클래스 서브(Sub) 클래스
부모 클래스 자식 클래스
----> 모두 동일한 표현
*/
//부모의 private 멤버는 자식이 접근이 불가능함.
//부모의 Public에 선언된 생성자 or 함수로부터 접근해서 사용해야됨.
'알고리즘' 카테고리의 다른 글
OS - Thread & Synchronization (0) | 2019.01.12 |
---|---|
OS - Kernel Compile, kernel Message, System Call, Kernel Module (0) | 2019.01.11 |
백준 10828번 스택 구현 (0) | 2019.01.03 |
iOS 가위바위보 어플 (0) | 2018.12.08 |
스위프트(Swift) 기본 문법 (0) | 2018.12.08 |
- Total
- Today
- Yesterday
- C++
- eclipse
- 환경오염
- 아키티오
- python
- 산업화
- egpu
- 슈어
- 백준
- 맥
- 알고리즘
- 이클립스
- se846
- Vega64
- 문제
- 맥북
- 카카오톡
- 파이썬
- 개발
- 코드업
- NAS
- CodeUp
- 외장그래픽
- 우분투
- 모바일 프로그래밍
- 서버
- 코딩
- 프로그래밍
- Java
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |