값(Value) 타입
인스턴스 할당시 해당 값이 복사되어 새로운 인스턴스 생성. 즉 원본 인스턴스와 독립적으로 동작한다는 뜻.
따라서 속성을 변경해도 원본에 영향을 주지 않음. 값을 공유하는 참조 타입인 클래스와 달리 독립적인 속성값 가짐.
스택(Stack)영역에 저장
스택은 정적으로 할당되는 메모리 영역으로, 크기가 작고 빠른 접근 가능. 구조체의 인스턴스는 스택 프레임에 자동으로 저장되고 해제됨. 따라서 메모리 할당과 해제에 관련된 오버헤드가 상대적으로 적고, 개발자가 메모리에 대해 크게 신경쓰지 않아도 됨.
상속 불가능
구조체는 다른 구조체나 클래스를 상속할 수 없음.
구조체는 단일 상속만 가능한 클래스와는 달리 다른 구조체를 내포하거나 프로토콜을 채택해 확장 가능.
멤버와이즈 이니셜라이저(Memberwise Initializer)
구조체의 모든 속성을 인자로 받아 초기화하는 간편한 멤버와이즈 이니셜라이저 자동 제공
멤버 함수
구조체는 멤버 함수를 가질 수 있음.
멤버 함수는 구조체 내부에서 작동하는 함수로, 해당 구조체의 속성과 동작 정의시 사용됨.
멤버 함수는 구조체의 인스턴스에 의해 호출되고 인스턴스의 속성에 접근하고 조작하는 데 사용할 수 있음.
프로토콜 채택
프로토콜을 채택해 기능 확장 가능.
프로토콜이란 특정 요구사항과 동작을 정의하는 인터페이스로, 구조체가 프로토콜을 채택하면 해당 프로토콜의 요구사항을 필수로 구현해야 함. 이를 통해 구조체의 기능 확장 및 재사용성을 높일 수 있음.