내일배움캠프 48일차 TIL - 구조체와 클래스

권태하·2024년 6월 25일
0
post-thumbnail

구조체(struct)와 클래스(class)는 모두 데이터와 메서드를 하나의 단위로 묶는 복합 데이터 타입입니다. 그러나 구조체와 클래스 사이에는 몇 가지 중요한 차이점이 있습니다. 주요 차이점은 다음과 같습니다:

  1. 타입의 종류:
    • 구조체: 값 타입(Value Type)입니다. 구조체의 인스턴스는 스택 메모리에 저장되며, 변수에 할당하거나 메서드에 전달할 때 인스턴스의 복사본이 생성됩니다.
    • 클래스: 참조 타입(Reference Type)입니다. 클래스의 인스턴스는 힙 메모리에 저장되며, 변수에 할당하거나 메서드에 전달할 때 인스턴스의 참조(주소)가 전달됩니다.

  2. 상속:
    • 구조체: 대부분의 프로그래밍 언어에서 구조체는 다른 구조체나 클래스로부터 상속받을 수 없습니다. 단, 인터페이스 구현은 가능합니다(C#의 경우).
    • 클래스: 클래스는 다른 클래스로부터 상속받을 수 있으며, 다형성과 같은 객체 지향 프로그래밍의 핵심 개념을 지원합니다.

  3. 기본 생성자:
    • 구조체: 사용자가 명시적으로 생성자를 정의하지 않아도 기본 생성자가 제공됩니다. 기본 생성자는 모든 필드를 기본값으로 초기화합니다. C#에서는 구조체에 매개변수 없는 생성자를 정의할 수 없습니다.
    • 클래스: 사용자가 생성자를 정의하지 않으면 기본 생성자가 자동으로 제공됩니다. 사용자는 매개변수 없는 생성자 또는 매개변수가 있는 생성자를 명시적으로 정의할 수 있습니다.

  4. 메모리 할당:
    • 구조체: 값 타입이므로 스택 메모리에 할당되며, 메모리 할당과 해제가 빠릅니다.
    • 클래스: 참조 타입이므로 힙 메모리에 할당되며, 가비지 컬렉터에 의해 메모리 관리가 이루어집니다.

  5. 사용 사례:
    • 구조체: 작은 데이터 구조를 모델링하고, 데이터의 복사본이 필요할 때 유용합니다. 예를 들어, 2D 좌표, RGB 색상 값 등이 있습니다.
    • 클래스: 복잡한 데이터 구조를 모델링하고, 데이터의 참조를 공유해야 할 때 사용됩니다. 대규모 애플리케이션과 객체 지향 설계에 적합합니다.
    구조체와 클래스를 선택할 때는 이러한 차이점을 고려하여, 애플리케이션의 요구 사항과 성능 고려 사항에 맞는 옵션을 선택해야 합니다.

profile
스터디 로그

0개의 댓글

관련 채용 정보