Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 메모리 누수
- 3d
- ASW(Application SpaceWarp)
- URP로 변경
- 프로그래밍 기초
- Specular
- VR
- 작업 집합
- C언어
- working set
- Cell Look
- 게임 수학
- Windows Build
- 개인 바이트
- AppSW
- ColorGradingLutPass
- Cell Shader
- URP
- Virtual Byte
- Private Bytes
- 가상 바이트
- 벡터
- OculusMotionVectorPass
- Three(Two) Tone Shading
- Cartoon Rendering
- Rim Light
- Toon Shader
Archives
- Today
- Total
WinCNT
제1강. Object Oriented Programming (C++) 본문
Object Oriendted Programming
객체 지향 프로그래밍
C에서는 없는데 C++에는 있는 것
C에는 객체 지향 프로그래밍에 필요한 요소들이 없음(캡슐화, 상속 등등)
구조체에 함수를 추가할 수 있는 것도 그 차이의 쉬운 예
C의 문제점
- 데이터와 함수가 응집성을 갖추지 못 했다
- 사실상 전역 변수와 함수들로 이루어진 모듈
- 다른 프로그래머가 몰라도 되는, 몰라야 하는 부분을 숨길 수 없다(언어적으로)
상세 설명
데이터와 함수가 응집성을 갖추지 못 했다
- 데이터와 함수가 사실상 연관되는 부분이 없다
- 한 구조체에 대해서 작동하는 함수는 계속 그 구조체를 인자로 받아야 한다
예를 들어 횡스크롤 액션 게임에서 플레이어의 정보(위치 좌표, HP 등등)을 구조체에 보관했다고 가정하자.
그리고 그 플레이어는 이동하거나 데미지를 받는 경우가 있다고 하자.
그럴 경우는 이동하거나 데미지를 받을 경우에 대해서 함수를 코딩할텐데,
C언어에서는 플레이어의 구조체와 이동/데미지 처리 함수가 실질적으로 연관성을 가지지 못 한다.
즉, 몬스터나 적 구조체 등이 플레이어를 위한 함수를 이용하는데 아무런 제약이 없다고 할 수 있다.
(물론 프로그래머가 조심하거나, 함수 처리를 동일하게 고안할 수는 있지만 언어적으로는 딱히 제약이 없음)
또한 이동이나 데미지 처리 함수의 인자로 항상 플레이어의 구조체를 인자로 넘겨주어야 하는데
이 과정에서 상당히 낭비가 발생한다.
하지만 C++에서는 클래스 등으로 위와 같은 문제점들을 해결할 수 있다
다른 프로그래머가 몰라도 되는, 몰라야 하는 부분을 숨길 수 없다
C에서는 은닉화 지원이 없다
C++
프로그래밍 패러다임
- 절차적 패러다임
- 함수형 패러다임
- 객체 지향 패러다임
- 제네릭 패러다임
다중의 패러다임을 가지고 있다
좋게 말하면 유연함, 나쁘게 말하면 잘못 사용하게 될 여지가 많음
기초는 C++98
보통은 C++11 문법을 주로 쓰게 될 것
C++17도 최근에는 자주 등장하게 되었다
Etc - 헤더와 cpp를 나누는 이유
헤더가 꼬이는 것을 막는다
인터페이스와 구현을 분리할 수 있다
(디자인 패턴으로는 브릿지 패턴)
SSS
'게임 프로그래밍(학습 내용 정리) > C++' 카테고리의 다른 글
다중 상속과 RTTI(Runtime Type Information) (0) | 2021.12.17 |
---|---|
다형성(Subtype Polymorphism) (0) | 2021.12.16 |
상속 (0) | 2021.12.14 |
동적 메모리 할당, 복사 생성자 (0) | 2021.12.10 |
클래스(Class) (0) | 2021.12.09 |