-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
Description
클래스와 구조체
클래스
- 참조 타입이다.
- 클래스는 상속이 가능하다.
- 클래스는 힙 영역에 저장하고 메모리 주소를 직접 전달한다.
구조체
- 값타입이다.
- 구조체는 상속이 불가능하다.
- 구조체는 값을 스택에 저장해서 복사 전달한다.
메모리 관점에서의 클래스와 구조체의 차이
구조체
- 필요시에 항상 메모리의 값이 복사되어 전달
- Stack에 저장
- 값이 들어있는 스택의 스코프가 종료되면 메모리에서 자동 제거�
클래스
- 필요시에 항상 메모리의 주소를 전달
- 값은 Heap에 저장, 주소를 Stack에 저장
- Reference Count를 통해 메모리 관리 (Swift에서 사용하는 ARC모델)
그렇다면 언제 사용할까?
- 클래스는 메모리에 오랫동안 저장, 관리가 된다. 반면 구조체는 메모리에 오랫동안 저장되지 않는다.
- 따라서 상속해서 사용한다면 클래스가 더 적합하고 연관된 데이터들을 캡슐화 할 때 구조체가 더 적합하다.