오늘의 코드카타
양과 늑대
- 방문 순서와 방문 가능 노드 집합이 동적으로 바뀜
- DFS + 백트래킹
- LV3 ( 40% )
-> 문제 풀이
오늘의 공부
학습한 강의
정리 노트
오늘의 CS
RTTI vs RAII
- RTTI (Run-Time Type Information)
- 컴파일 시점 타입이 아닌 런타임 중에 객체의 실제 타입 정보를 제공하는 기능
- 다형성을 지원하기 위해 사용 (
virtaul 키워드를 통해서)
- dynamic_cast, typeid에서 사용
- RAII (Resource Acquisition Is Initialization)
- 객체의 생명 주기와 리소스의 생명 주기를 일치시키자는 원칙
- 생성자에서 리소스을 획득하고, 소멸자에서 리소스를 자동 해제시키면서 메모리 누수를 방지
- 적용 사례
std::unique_ptr, std::shared_ptr의 스마트 포인터 -> 메모리 자동 해제
std::ifstream, std::ofstream의 파일 스트림 -> 파일 자동 닫기
- 언리얼의 GC(Garbage Collection) -> UObject를 통해 생명 주기를 관리
파일 스트림
<fstream> 헤더를 통해 3가지 파일 스트림 클래스 제공
std::ifstream -> 입력 전용 (읽기)
std::ofstream -> 출력 전용 (쓰기)
std::fstream -> 입력 + 출력 (읽기/쓰기 모두)
- 파일을 열 때는 보통 생성자에서 파일 이름을 주거나,
.open() 함수 호출
- 파일이 스코프를 벗어나면 자동으로 닫히나,
.close() 함수를 통해 중간에 닫아줄 수 있음
- 열기 모드 옵션
ios::in : 읽기 모드
ios::out : 쓰기 모드
ios::app : 추가 모드 (기존 내용 뒤에 씀)
ios::trunc : 열 때 기존 내용을 지움 (default)
ios::binary : 바이너리 모드