- 값을 저장하기 위해 프로퍼티 정의가 가능하다.
- 기능 실행을 위해 메서드 정의가 가능하다.
- 서브스크립트 정의가 가능하다.
- 초기화 될때의 상태 정의를 위한 생성자 정의가 가능하다.
- 새로운 기능 추가를 위한 익스텐션으로 확장이 가능하다.
- 특정 기능을 수행하기 위한 프로토콜 준수가 가능하다.
- 구조체는 상속이 불가하다.
- 타입 캐스팅은 클래스 인스턴스에 대해서만 허용된다.
- 소멸자(디이니셜라이저)는 클래스 인스턴스만 활용 가능하다.
- 참조횟수 계산(reference counting)은 클래스 인스턴스만 해당된다.
- 구조체는 값 타입이며, 클래스는 참조 타입이다.
- 구조체와 클래스는 새로운 데이터 타입을 정의하고 기능을 추가한다는 점이 같다.
- 연관된 간단한 값의 집합을 캡슐화한다면 구조체를 사용한다.
- 값을 참조하기 보다 복사하는 것이 합당한 경우 구조체를 사용한다.
- 다른 타입에 대해 굳이 상속해야할 이유가 없을 때 구조체를 사용한다.