-
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와 enum의 차이를 설명하시오. #1
Comments
Struct
Class
Enum
Struct, Class, Enum 차이점Stuct, Class, Enum은 유사한 기능을 제공하지만 가장 큰 차이점은 값 타입과 참조 타입 이라는 📝 참고 사이트 |
struct
class
enum
struct, class, enum 의 차이점값(value) 타입인 struct와 enum은 원본 인스턴스를 복사하거나 메서드에 인자로 전달할 경우 인스턴스 값을 가진 새로운 복사본 인스턴스가 Stack에 할당된다. 따라서 어떤 하나의 인스턴스의 값을 변경해도 다른 복사본들에게는 영향을 미치지 않는다. 반면, 참조(refrence) 타입인 class는 원본 인스턴스를 대입하거나 메서드에 인자로 전달할 경우 원본 인스턴스가 할당된 Heap 메모리 위치(주소)에 대한 참조체가 전달된다. 결론적으로, 값 타입은 그 모든 데이터들이 Stack 메모리 구조상 위에 바로 할당되고(push), 해제시에 가장 위의 데이터가 메모리에서 해제(pop)되는 후입선출 구조이기에 매우 빠르다. 참조 타입은 그 데이터들이 Heap 메모리에 할당되는데 이 과정에서 Heap에 할당할 만한 크기의 메모리 공간을 계산하고 할당해야하며, 할당한 이후에는 이 할당된 Heap 메모리상 주소에 대한 정보를 Stack에 또 할당해야 한다. 그리고 이 참조 타입 데이터를 사용할 때 Stack 메모리에 할당된 Heap 메모리상 주소 데이터를 찾아 이 Heap 메모리상 주소에 할당된 나머지 데이터를 찾아야하므로 비용이 값타입보다 크다. class 보다 struct를 사용하는게 좋은 경우
📝 참고 사이트 |
Struct와 Class, enum모두 프로퍼티를 정의하고, 값을 저장하며, 메서드를 정의할 수 있는 객체 생성 메커니즘을 제공하지만, 구조체의 인스턴스와 클래스의 인스턴스가 복사되거나 메서드 또는 함수에 인자가 전달될 때 발생하는 동작에 차이가 있음 Struct클래스보다 효율적이고 멀티 스레드 코드를 사용하는 데 더 안정적임
Class상속이 필요하거나 데이터가 캡슐화된 하나의 인스턴스가 필요할 때는 클래스를 사용해야 한다. 또한 인스턴스가 소멸될 때 리소스를 확보하기 위한 작업이 필요할 때도 클래스를 사용해야한다.
enum연관된 값의 집합을 정의한다.
📝참조 |
No description provided.
The text was updated successfully, but these errors were encountered: