[Swift] Class와 Struct, Enum

윤여송·2023년 12월 25일
0

Swift

목록 보기
27/28

Class, Struct, Enum 비교

1.Class

가장 큰 특징은 참조타입(call by reference)이다.

참조 타입의 인스턴스를 만들면 Heap 영역에 할당이 된다. Heap 영역에 저장된 실제 정보는 스택 영역에 해당 힙 영역을 가르키는 참조(주소)가 저장이 되서 정보를 가져온다.

클래스 인스턴스는 참조타입이기 때문에 var가 아닌 let으로 선언해도 내부 프로퍼티를 변경할 수 있다.

클래스의 또 다른 특징은 상속이 가능하다.
클래스는 이니셜라이저가 필요하다(프로퍼티에 기본값을 할당했을 경우 필요 없음.)

2.Struct

구조체는 참조타입이 아닌 값 타입이다.
힙 영역을 찾을 필요가 없어 클래스보다 빠르다.

값 타입이기 때문에 let으로 선언한 인스턴스는 값을 변경할 수 없다.
또한 var로 선언한 인스턴스라도 let 프로퍼티면 변경할 수 없다.

구조체는 상속이 불가능하다.
구조체는 이니셜라이저를 자동으로 만들어준다.(직접 만들 수도 있음.)

3.Enum

enum은 값 타입이다.
연관된 값들을 한 곳에 묶어놓은 타입이다.
case들에 값을 정해주지 않아도 하나하나가 고유의 값이다.(지정된 값을 사용하고 싶다면 원시 값을 설정한다.)
enum은 상속이 불가능하다.

profile
y_some__velog

0개의 댓글