728x90
C++
RAII와 동적메모리 자원 관리
- RAII(Resource Acuquisition Is Intialization)는 C++에서 강조되는 디자인 테크닉 중 하나이다.
- C++ 프로그래밍에서 자원의 획득과 해제를 객체의 생명 주기와 결합하여 자동으로 관리하는 기법이다.
- 이 기법은 메모리, 파일 핸들, 소켓 등 다양한 자원을 효율적으로 관리하고, 자원 누수(Resource Leak)를 방지하는 데 매우 유용하다.
기본 개념
- RAII의 핵심 아이디어는 객체가 생성될 때 자원을 획득하고, 객체가 소멸될 때 자원을 해제하는 것이다.
- 이 방식은 C++ 소멸자(destructor) 호출 메커니즘을 활용하여 자원을 자동으로 정리해준다.
장점
- 자동 자원 해제
- 객체의 생명 주기가 끝날 때 자동으로 자원을 해제하여 자원 누수를 방지한다.
- 예외 안정성
- 예외가 발생하더라도 소멸자가 호출되어 자원이 확실히 해제되므로, 예외 안정성을 높인다.
- 코드 간결성
- 명시적으로 자원을 해제하는 코드를 줄여 코드가 간결해진다.
가상함수
추상 클래스(abstract)
- 추상 클래스(Abstract Class)는 C++에서 하나 이상의 순수 가상 함수(Pure Virtual Function)을 포함 하는 클래스로, 객체를 직접 생성할 수 없으며, 상속을 통해서만 사용할 수 있다.
- 추상 클래스는 공통 인터페이스를 정의하고, 이를 상속받는 클래스들이 인터페이스의 구체적인 동작을 구현하도록 강제한다.
특징
- 순수 가상 함수(Pure Virtual Function)
- 추상 클래스는 최소한 하나의 순수 가상 함수를 포함해야 한다. 순수 가상 함수는 클래스 내에서 구현되지 않고, 파생 클래스에서 반드시 구현해야 하는 함수이다. 순수 가상 함수는 함수 선언 뒤에 ‘= 0’을 붙여서 정의한다.
- 객체 생성 불가
- 추상 클래스는 객체를 직접 생성할 수 없습니다. 객체를 생성하려고 하면 컴파일 오류가 발생한다.
- 상속을 통해 구현
- 추상 클래스를 상속받는 파생 클래스는 순수 가상 함수를 모두 구현해야 객체를 생성할 수 있다. 그렇지 않으면, 파생 클래스도 추상 클래스가 된다.
Virtual 키워드
- virtual 키워드는 메서드, 속성, 인덱서 또는 이벤트 선언을 수정하고 파생 클래스에서 재정의하도록 허용하는 데 사용된다.
- 상속 관계에서 자식이 해당 함수를 오버라이딩 하기 위해 사용한다.
728x90
'Study > TIL(Today I Learned)' 카테고리의 다른 글
24.06.15 CS (0) | 2024.06.17 |
---|---|
24.06.14 C++ (0) | 2024.06.16 |
24.06.12 C++ (0) | 2024.06.12 |
24.06.11 C++ (0) | 2024.06.12 |
24.06.10 복습 (1) | 2024.06.10 |