일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- Overloading
- 독서
- C
- Algorithm
- Implicit method
- C++
- ComputeShader
- 알고리즘
- sparse matrix
- 2020.03.16
- class
- UNORDERED_MAP
- stretch force
- rendering pipeline
- 알고리즘연습
- TIP
- Conjugate Gradient
- 참조자
- ppt
- 프로그래머스
- 2020.02.23
- ue5
- game jam
- 학습용
- dedicatedserver
- 논문
- graphics
- 백준
- Til
- listenserver
Archives
- Today
- Total
OSgood의 개발일기
[class] C++ Inheritance(상속) 본문
- 90년대 후반에 객체지향(OOP)은 매우 유행하기 시작한다. 이 시기에 inheritance는 기존의 만든 클래스를 재활용한다는 목적이 강하였다. 물론 '상속'에는 이러한 이점도 있지만 근본적인 존재 이유가 되진 않는다.
- '상속'을 이용하는 근본적인 이유는 '확장성'에 있다.
좋은 프로그램은 유지, 보수를 하거나 나중에 프로그램에 추가 기능을 넣어야할 때 최소한의 노력을 들여 프로그램을 고칠 수 있어야 한다. 이러한 확장성의 관점에서 '상속'은 매우 강력한 도구가 될 것이다.
- inheritance문법은 예시를 들어서 설명하겠다. '가방'과 '뒤로 메는 가방' 을 예로 든다면 '뒤로 메는가방'은 상속은 받는 클래스가 될 것이고 '가방'은 상속을 하는 클래스가 될 것이다.
'가방' |
'뒤로 메는 가방' |
상속을 하는 클래스 |
상속을 받는 클래스 |
부모 클래스 |
자식 클래스 |
base 클래스 |
derived 클래스 |
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 29 30 31 32 33 34 35 36 37 | class 가방: { public: int 지퍼갯수 가방() : 지퍼갯수(1) { cout<<"지퍼갯수는:"<<지퍼갯수<<endl; } 가방(int n) : 지퍼갯수(n) { cout<<"지퍼갯수는:"<<지퍼갯수<<endl; } void show() { cout<<"지퍼갯수는:"<<지퍼갯수<<endl; } } class 뒤로 메는 가방: public 가방 { public: int 끈길이 뒤로 메는 가방() : 끈길이(10) { cout<<"끈길이:"<<끈길이<<endl; } 뒤로 메는 가방(int n) : 끈길이(n) { cout<<"끈길이:"<<끈길이<<endl; } 뒤로 메는 가방(int n1,int n2) : 가방(n1),끈길이(n2) { show(); cout<<"끈길이:"<<끈길이<<endl; } } | cs |
이런 식의 방법을 이용하면 '뒤로 메는 가방'은 '가방' 안에 있는 변수와 함수들을 다 상속받게 된다. 또한 '뒤로 메는 가방' 클래스를 만들게 되면 '뒤로 메는 가방'의 생성자가 호출된 후에 '가방' 생성자 또한 호출 되게 된다.
만약 '뒤로 메는 가방'의 생성자에서 '가방'의 생성자 호출을 명시하지 않으면, '가방'의 void 생성자가 호출되게 된다.
<윤성우 열혈c++프로그래밍>을 통해 공부한 내용...
'C++ > 문법' 카테고리의 다른 글
Constructor & Destructor (0) | 2019.03.08 |
---|---|
Call-By-Reference-참조자 (0) | 2019.03.03 |
메모리 공간 (0) | 2019.03.03 |
c++예외처리(Exception Handling) (0) | 2018.11.11 |
얕은 복사(shallow copy)의 문제점 (0) | 2018.11.09 |