-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
struct, class의 차이점은 무엇인가요? #28
Comments
먼저 struct와 class의 공통점은 모두 기본적으로 데이터를 용도에 맞게 묶어 표현하고자 할 때 사용합니다. 반면, 차이점은
|
struct는 value타입이고 class는 reference 타입이라는 점이 가장 다릅니다. |
🙋🏻 답변Swift에서 Struct와 Class 모두 사용자가 정의한 데이터 타입을 생성하기 위해 사용됩니다. 하지만 이 둘은 사용되는데 있어서 중요한 차이점이 있습니다. 먼저 Struct의 경우 값 타입으로 인스턴스를 복사하는 형태로 사용되고, 복사한 인스턴스에 변경을 가해도 원본을 유지하는 특성을 갖고 있습니다. 또한 class와 다르게 상속을 할 수 없어 한번 선언한 메서드를 오버라이딩 할 수 없습니다. 하지만 Class는 참조 타입으로 동일한 인스턴스를 참조하여 사용할 수 있습니다. 이렇게 참조한 인스턴스에 변경을 가한다면 원본 또한 변하는 특성을 갖고 있습니다. 이 둘은 메모리적인 관점에서도 차이점을 보이는데, struct의 경우 스택에 할당되어 자체적으로 관리가 되지만, class의 경우 힙 메모리에 할당되어 ARC가 관리해줍니다. 그렇다보니 class를 사용할 때에는 무분별한 참조가 되진 않는지 주의있게 사용해줘야되는 단점이 있습니다. 이러한 특성들로 인해 struct는 주로 간단한 데이터 모델이나 불변성이 중요한 경우에 사용되고, class는 복잡한 OOP와 같은 구조를 구축하거나 상태를 공유하는데 사용됩니다. 🏷️ 키워드
|
구조체와 클래스는 둘 다 속성과 메서드를 모아 객체 타입을 만들어 주는데 사용한다. 참조-값클래스는 객체의 정보가 힙에 저장되며, 스택에는 힙에 저장된 객체의 참조 주소가 복사되어 관리되는 참조 타입입니다. 상속과 메서드 디스패치클래스는 구조체와 다르게 상속이 가능하다는 장점이 있습니다. 상속이 가능해 자녀 클래스가 오버라이딩을 할 수 있어 메서드의 다형성을 보장해주고 확장성, 코드재사용성의 장점을 가질 수 있습니다. 다만 이 경우 메서드 호출이 동적 디스패치를 통해 이루어집니다. 동적 디스패치는 호출될 메서드를 런타임에 확정하는 방식이라 오버헤드가 다소 있습니다. |
No description provided.
The text was updated successfully, but these errors were encountered: