**개념의 자세한 내용이 아닌 기존 독학 내용을 제외한 강의에서 새롭게 알게 된 내용들을 정리하였다.
복습 내용~
friend가 간편하지만 Getter/Setter로 하는 연습하기!
~
static
cpp 밖으로 넘기지 않음.
변수는 최대한 범위를 제한하는 것이 좋다.
static 변수는 코드 영역에서 메모리가 잡히기 때문에 (code/data/stack/heap 중)
따로 초기화 필요.
선언하면 여러 인스턴스가 static 변수를 공유, 재활용한다.
형변환
cpp는 4가지 형변환
const_cast<> : const를 추가/제거
static_cast<> : 주로 일반 형변환
reinterpret_cast<>
: C스타일 형변환과 동일한 성질, 강제 형변환. static_cast보다 강력하지만 안전하지 않음
dynamic_cast<> : 같은 상속 계층에서 형변환
형변환 연산자도 연산자 오버로딩 가능.
- 주로 Timer에 사용. static_cast<>
게임에서는 사용 X
전체적으로 기본 자료형에서는 static_cast<>혹은 dynamic_cast<> 사용,
Unreal Engine에서는 제공 형변환 함수를 사용함.
RTTI(Run Time Type Information)
실시간 타입 정보 인식 시스템
기존에는 빠르게 객체 타입을 검사하기 위해 포인터 주소를 사용했지만,
최근에는 고유 번호인 GUID/UUID를 배정하여 사용. (Unity의 GetHash)
RTTI에서는 상속 개념이 없어, 부모와 자식을 비교할 경우 같은 타입이라고 리턴함.
따라서 커스텀 RTTI로 추가 필요.
최근에는 dynamic cast를 다루지만, 결국 custom RTTI를 이해해야 엔진을 이해할 수 있음
파일 입출력
윈도우os에서는 파일을 열면 꼭 닫아야 함.
파일 권한이 부여되면 다른 곳에서는 접근 X.
C#과 C++을 같이 사용하여 엔진을 만들 때가 있는데,
이때 두 언어 사이의 연결을 만드는 것을 마샬링(Marchalling)이라고 함. (비용 비쌈)
C++ 보다 C의 처리가 훨씬 빠르기 때문에, C에 있는 기능이라면 사용하기.
Level Test 문제풀이 시간
비트 배열
: Unity의 Layer, Unreal의 Channel의 개념
비트 배열로 Layer를 판정하여 Renderer, Physics 계산을 처리.
Physics - Rigid body(강체) 처리, 점과 점이 겹쳤는가?비교로 충돌을 체크.
연산 중 비트연산이 가장 빠르기 때문에, Rendering과 Physics는 비트 연산 사용.
-> 최적화하려면, 계산을 안 하도록 하는 방법을 찾는 것이 가장 중요. (충돌 처리, 렌더러 처리)
메모
F9 중단점 설정 단축키
\(백슬래시)를 넣으면 다음 줄까지 매크로로 인식
경로는 \또는//로 구분한다.
'C++ > 수업 내용' 카테고리의 다른 글
[ C++ 6, 7, 8, 9일차 ] 자료구조 시작, T 템플릿, 콘솔 엔진 제작 시작 (0) | 2025.01.08 |
---|---|
[ C++ 3일차 ] 상속, 객체와 포인터의 관계, virtual 함수, 연산자 오버로딩 (1) | 2024.12.27 |
[ C++ 2일차 ] class, 동적 메모리, C++의 고유 문법, 지평좌표계.. (1) | 2024.12.26 |
[ C++/문제 해결 ] class의 깊은 복사와 임시 객체를 통한 생성 오류 (0) | 2024.12.26 |