티스토리 뷰
C와 C++의 가장 큰 차이는 C는 절차 지향 언어이고 C++은 객체 지향 언어라는 점이다.
C에서 C++으로 넘어오면서 절차 지향에서 (구조체) -> 객체 지향 (클래스)가 되었다는 점이다.
이렇게 객체지향 언어가 되면서 가장큰 4가지 특징이 생겼다.
1. 캡슐화 (은닉성)
2. 상속
3. 다형성
4. 추상화
이다.
자주 보이는 접근제한 지정자 3개 - public(완전 공개), private(숨기기), protected(상속) 세 가지도 생겼다.
은닉화는 접근제한 지정자로 간단하게 표현 가능하다.
두번째인 상속은 무엇일까.
말 그대로 상속 받는 것이다. 기능을 받아오겠다는 뜻인데 이를 이용하면 똑같은 부분을 굳~~이 구현하지 않아도 된다.
child가 parent를 상속받았다고 가정해보자.
class child : public parent
{~}
그렇다면 child에서 parent의 private로 접근이 가능할까? 상속 받았으니 말이다. 답은 불가능이다.
public parent를 상속받은 자식에서 부모에게 접근하려면 public으로 설정해야 하는데 그러면 외부에서도 접근이 가능해져버린다. 부모라도 자식에게 숨기고 싶은게 있는법이니까.. !
이럴때 사용하는게 protected이다!!!
역시나 말로만 설명하면 어려워서 코드로 살펴본다면,
CChild가 CParent 를 상속받은 가장 기본적인 형태이다.
부모 안에는 각 접근제한 지정자로 지정되어 있는 int 값들이 존재한다.
당연하게도 main 함수 안에서 부모 객체일 때, 부모 클래스의 맴버에 접근을 하려고 하면 public 인 b에만 접근이 가능하다고 나온다.
또한 자식 객체에서 상속받은 부모의 맴버에 접근하려고 할 때에도 public인 b에만 접근이 가능하다. 아래는 우리가 보는 값이 올바른 값인지 출력을 통해 보여준 값이다.
이렇게 class 외부에서는 public 으로만 접근이 가능한 것을 확인할 수 있다.
그러면 부모를 상속받은 자식 내부에서도 부모의 protected에 접근이 가능한지 확인을 해보자.
위의 그림을 보면 부모를 상속받은 자식 클래스에서 CParent 에 속해있는 맴버를 확인 했을 때
private 인 a 는 잠겨 있고 (불가능 하고)
public 인 b 는 가능하고
protected 인 c 는 별표시인 것을 확인할 수 있다.
위에서 public으로 접근이 가능한 것을 확인 했으니 상속을 받은 자식 클래스 내부에서 protected의 멤버로 접근이 가능한지 확인을 하면,,,
위의 사진과 같이 오류가 없고 정상적으로 사용할 수 있는 것을 볼 수 있다.
이렇게 상속에 대해 짧게 알아보았다.
상속을 이용하면 코드의 재사용성을 높일 수 있다. 가장 자주 호출되는 기능을 최상위 부모클래스에 두고 밑으로 내려오면서 부모를 상속받는다면 복잡해 지지 않고 풍부한 기능을 구현 가능할 것 같았다. (대신 머리 터지겠지..)
또한 public 상속인지 protected 상속인지에 관해 정리해 놓은 글도 많은데 이번 포스팅에서는 여기까지만 글을 적는다. 사실 크기가 public > protected > private 라는건 다들 느낌적인느낌느낌으로 알고있을테니 말이다.
이 포스팅은 유투브 어소트락 게임 아카데미의 강의를 듣고 난 뒤 개인적으로 정리한 글 입니다.
https://www.youtube.com/c/AssortRockGameAcademy
어소트락 게임아카데미
DirectX11/12 자체엔진 게임제작, 언리얼 엔진 4 진정한 게임프로그래머가 되고 싶다면 어소트락 게임아카데미 24시간 자습실, 24시간 1:1 코칭 시스템 ASSORTROCK.COM
www.youtube.com
↑어소트락 게임 아카데미 유투브 링크.
'공부 > C++' 카테고리의 다른 글
[C++] 메모리 풀 1 (0) | 2023.03.30 |
---|---|
동적 라이브러리 (0) | 2022.03.27 |
C++ 복습) const와 레퍼런스(&) (0) | 2021.11.23 |
C++ 복습) 포인터 (0) | 2021.11.23 |
C++ 복습) 변수 (0) | 2021.11.23 |
- Total
- Today
- Yesterday
- 고득점kit
- 데디케이티드
- 고득점 Kit
- LV2
- LV3
- 스택/큐
- UE5
- greedy
- FPS
- 정렬
- DFS
- 해시
- 힙
- Heap
- Unreal 5.1
- 개인공부
- 완전탐색
- Ue
- C++
- 프로그래머스
- 너비우선탐색
- level3
- 누적합
- 탐욕법
- 재귀
- 디자인 패턴
- IMGUI
- sort
- 채팅서버
- BFS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |