내일배움캠프 42일차 TIL
오전에 코드카타 후, 그동한 소홀히 했던 이론 공부를 이것저것 진행했다.
class와 struct
둘 다 필드로 변수 및 메서드를 가질 수 있다는 점에서 기능적으로는 비슷하지만, 두가지 큰 차이점이 있다.
- 클래스는 상속이 가능하지만, 구조체는 불가능하다.
- 클래스는 메모리의 힙 영역에 할당되고, 구조체는 스택에 할당된다. (단, 구조체로 선언해도 모든 필드의 합이 16byte를 넘거나, 구조체 안에 필드로 클래스 타입을 가지는 경우 힙에 할당된다.)
스택의 경우 사용할 수 있는 메모리가 한정적이지만, 힙은 많은 메모리 크기를 가질 수 있다. 하지만 스택은 가비지 컬렉션에 의해 관리되지 않기 때문에 성능상 많은 장점이 있다. 때문에 상속이 필요하지 않거나 구조체로 선언해도 힙 영역에 할당되지 않는 경우 구조체로 선언하여 스택 메모리 영역을 사용하는 것이 좋다.