구조체와 class의 가장 큰 차이는
struct(구조체)는 값 타입이지만 class는 참조 타입이라는 것 입니다.
struct는 사용을 할 때부터 값 형식이기 때문에 이미 스택에 할당 되어 있지만
class는 new 키워드를 통해 힙 영역에 할당하고, 그 주소값을 참조하는 형식입니다.
또한 class는 상속이 가능하지만 struct는 상속이 불가능 합니다.
struct는 스택에 메모리가 할당되는 값타입이기 때문에 더 적은 메모리를 사용하여서
메모리 관리에 용이하기 때문에 구조체를 사용합니다.
Struct와 Class의 큰 차이는 물론 상속에 대한 처리 및 그 사용성도 있지만
타입(값, 참조)에 따른 메모리 할당 방식의 차이가 가장 크게 느껴진다.
값타입은 스택에 메모리가 할당되지만 참조타입은 힙에 할당되는
값의 메모리 주소가 스택에 할당된다
Unity에서는 Vector3또는 Quaternion등을 구조체로 사용하고 있다.
일반적으로 new 키워드를 사용하면 힙에 할당되는 것과 달리, 스택에 할당된다.
C#이 통일성 때문에 지원하는 것이라고 하는데... 오히려 좀 혼동되는 면이 없잖아 있다.
구조체는 16바이트 미만일 경우에 사용하는 것을 추천한다.
-> 구조체는 작은 크기의 데이터에, 클래스는 더 복잡한 객체를 표현하기 위해서 사용!
a. 구조체는 생성자를 선언할 수 있으나 반드시 파라미터가 있어야한다.
b. 구조체는 상속이 불가능하다.
c. 구조체는 필드선언 시 const또는 static으로 선언한 경우에만 초기화가 가능하다.
d. new연산자를 사용하지 않고 인스턴스화 할 수 있다.