Skip to content

Latest commit

 

History

History
45 lines (32 loc) · 2.08 KB

Class&Struct.md

File metadata and controls

45 lines (32 loc) · 2.08 KB

Class와 Struct?


Class와 Struct의 구현방법은 이상하리만치 비슷하다. 그럼 이 둘 사이에는 어떤 공통점과 차이점이 있을까? 또 어떤 경우에 어떤 것을 써야하는 걸까?

Class와 Struct의 공통점?

  • 여러 변수와 함수를 담을 수 있는 하나의 집합(컨테이너)
  • 데이터를 용도에 맞게 묶어서 사용할 때 용이
  • 확장이 가능함
  • 점(.)을 사용하여 인스턴스의 속성과 메서드에 접근할 수 있음
  • 프로토콜이 사용 가능함
  • 인스턴스 생성이 가능하고 생성 방법이 같음
  • 서브스크립트(subscript) 사용이 가능
  • 생성자를 사용해 초기 상태를 설정할 수 있음

Class와 Struct의 차이점?

  • 구조체에는 init()메소드 없이 자동으로 초기화 함수를 만들어 줌.
  • 구조체는 값 타입, 클래스는 참조 타입
  • 구조체는 상속할 수 없다.
  • 타입캐스팅은 클래스의 인스턴스에만 허용된다. (상위 또는 하위 클래스 타입으로 형변환 가능)
  • 디이니셜라이저는 클래스의 인스턴스에만 활용할 수 있다.
  • 참조 횟수 계산은 클래스의 인스턴스에만 적용된다.

언제 Struct를 사용하면 좋을까?

이 경우가 아니면 Class를 사용하는 것이 좋다 아마도...
  • 불변성(Immutable)이 필요한 데이터 타입
  • 적은 데이터, 즉 멤버 프로퍼티의 갯수나 차지하는 메모리 용량이 적은 타입
  • 대입 보다는 생성되는 경우가 많은 타입
  • 공유될 필요가 없는 타입
  • 클래스 타입 등 레퍼런스에 기반한 자료형을 저장용 프로퍼티로 쓰지 않는 경우

참고자료