내일배움캠프 25일차 TIL : 개념 정리

김정환·2024년 10월 18일
0

키워드

  • 클래스 vs 구조체

개념 잡기

튜터님께 피드백을 받고나서 가장 크게 각인된 것이 있다.
어떤 방법을 사용할 때 이걸 왜 써야하는지 명확한 이유가 필요하다고 하셨다.

그 말을 듣고나서 지금껏 어떻게 개발을 해왔는지 되돌아보게 되었다.
그러면서 이번 기회에 내가 써온 것들이 어떤 것이었는 자세하게 정리해보고자 한다.

https://velog.io/@jhk0701/%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC-1-%ED%81%B4%EB%9E%98%EC%8A%A4-vs-%EA%B5%AC%EC%A1%B0%EC%B2%B4

클래스 vs 구조체

이걸 정리한 이유는 클래스라는 방법이 있는데 구조체를 왜 써야하지? 라는 의문이 들었다.

가장 큰 차이점을 정리하자면

클래스

  • 참조형 (Reference Type) : 메모리 영역 중 힙(Heap)에 저장된다.
  • 인스턴스는 힙에 저장되고, 이 저장된 데이터를 참조만 한다. (얕은 복사)
  • 메모리 할당과 해제가 복잡하고 GC에 의해 메모리 관리가 이루어진다.
  • 확장 가능 : 상속 및 다형성, 의존성 주입

구조체

  • 값형 (Value Type) : 메모리 영역 중 스택(Stack)에 저장된다.
    • 어떤 구조체를 만들고 다른 변수에 대입하면 값이 복사된다. (깊은 복사)
    • 메모리 할당과 해제가 간단하고 빠르다.
    • 힙 메모리를 사용하지 않아 GC에 부하가 생기지 않는다.
    • 단, 구조체의 크기가 너무 커지거나, 구조체 인스턴스를 불필요하게 많이 생성하면 스택 메모리가 과도하게 사용될 수 있다. (스택 오버플로우 발생)
  • 생성자, 프로퍼티, 멤버 변수, 멤버 메서드, 이벤트 사용 가능
  • 상속 불가
    상속은 불가능한데 interface 구현은 가능하다.

정리

  • 구조체 : 작은 크기의 데이터 저장이나 단순한 데이터 구조에 적합
  • 클래스 : 더 복잡한 객체를 표현하고 다양한 기능을 제공

#내일배움캠프 #스파르타내일배움캠프 #스파르타내일배움캠프TIL

profile
사파 개발자

0개의 댓글