반응형
구조체
- 데이터 자체를 저장하는 값 형식 (Value Type)
- 파라미터의 값 전달 시 구조체의 값이 전달
- 메모리의 스택(Stack) 영역에 직접 저장
- 데이터 자체만 스택 영역에 저장하므로 클래스보다 메모리 사용량이 적음
- 작은 크기의 데이터를 효율적으로 저장하고 전달하는 데 적합
- 값 형식으로 구성되었기 때문에 값을 복사하여 생성
- 값이 복사 될 때마다 독립적인 인스턴스 생성
- 기본 생성자를 정의할 수 없음
- 모든 멤버 변수에 대한 초기화를 사용자가 직접 수행
- null 값을 가질 수 없으나 변수가 선언될 때 해당 값 형식의 기본 값으로 자동 초기화
클래스
- 데이터에 대한 참조를 저장하는 참조 형식 (Reference Type)
- 파라미터의 값 전달 시 클래스의 참조가 전달
- 변수는 실제 데이터가 저장된 위치를 참조하는 포인터 역할
- 클래스의 인스턴스는 메모리의 힙(Heap) 영역에 저장
- 참조 형식의 인스턴스가 힙 영역에 저장되며 구조체에 비해 비교적 메모리 사용량이 많을 수 있음
- 인스턴스화될 때 기본 생성자를 사용하여 초기화
- null로 초기화 할 수 있음
요약
간단 요약
- 구조체 : 작은 크기의 데이터를 담고 빠른 연산을 수행하는데 적합
- 클래스 : 상속, null 값 지원, 복잡한 객체 모델을 구축하는데 적합
프로그래밍 언어를 기준으로 요약
- C언어 : 구조체만 있음 / 클래스 없음
- 자바 : 클래스만 있음 / 구조체 없음
- C++ : 구조체와 클래스 있음
- C# : 구조체와 클래스 있음
반응형