클래스 vs 구조체 직관 비교
| 구분 | 클래스 (참조형) | 구조체 (값형) |
|---|---|---|
| 비유 | 바로가기 아이콘 | 파일 복사본 |
| 메모리 | 힙에 저장, 주소만 복사 | 스택에 직접 저장, 값 자체 복사 |
| 데이터 공유 | 여러 참조가 하나의 객체를 공유 | 각각 완전히 독립된 데이터 |
| 영향 범위 | 하나 수정 시 모두 영향 | 하나 수정해도 다른 쪽은 변화 없음 |
struct 배우다가 class랑 struct 차이점이 나오는데
class는 힙에 올라간거 참조하는거고
struct는 스택에 값 자체가 올라간다고 하더라
그럼 예를들면 class는 바로가기 파일이고 struct는 단순 복붙인가?? 란 생각이 났는데 이 비유가 맞음?
놀라운 사실 구조체 타입도 힙에 할당하여 사용할수있다. - dc App
그리고 힙에 저장되는 것과 스택에 저장되는거의 차이는 함수가 종료될때 사라지냐 프로그램이 종료될때 사라지냐의 차이 - dc App
스택에 저장되는 경우 실행중인 함수가 종료될때 할당된 공간들을 자동으로 반환하지만 힙의 경우 사용자가 할당하여 사용하는 공간이기에 직접 공간을 해제 하여야함(현대의 높은 수준의 언어 c#, 파이썬 같은 언어는 gc가 알아서 처리해줌) - dc App
구조체와 클래스의 차이는 언어마다 다른데 보통 상속이 가능하냐 불가능하냐의 차이가 가장큼 - dc App
@도토리쥐 아하 초보강좌에선 이런 내용이 없었네 토막강좌 ㄳㄳ
더 알아보고 싶으면 c나 c++ 포인터 학습하고 메모리 할당malloc, new 키워드 학습 ㄱㄱ - dc App
ㅇㅇ
그정도만 알아도 게임개발하는데 충분하다.. - dc App
유니티에 있는 vector2, vector3 같은 형식들도 원래 c#엔 없고 유니티에서 자체적으로 만든 struct임 - dc App
int 형식의 변수들이 한번에 많이 존재하더라도 전부 별개의 독립된 데이터잖어 이런 int, string처럼 나만의 커스텀 "형식"을 하나 만들어주고, 그 형식의 연산자와 메서드 등을 설정해준게 구조체 가령 c# int 형식에서의 +는 수학적 덧셈으 사용되고, List<T> 형식에서 add()는 리스트에 매개변수를 추가해주는 기능인데 구조체를 내가 직접 선언해주면 저런 연산 규칙들도 내가 직접 설정해줄 수 있음 - dc App