구조체와 클래스 비교

구조체와 클래스는 모두 사용자 데이터 타입을 정의할 때 사용된다. 둘 다 멤버 변수와 함수를 가질 수가 있다는 공통점이 있지만 사용 용도와 접근 제어에서 차이점이 있다.


구조체(struct)

  • 정의

    • 관련된 데이터를 그룹화하여 하나의 사용자 정의 데이터 타입으로 정의하는 방법
    • C: 데이터만 저장하는 용도로 사용
      • 함수 저장이 불가능하지만 함수 포인터는 저장 가능
      • 그러나 코드가 복잡해지고, 타입 안전성이 떨어짐
    • C++: 함수(멤버 함수) 포함 가능, 클래스와 거의 동일한 기능 제공
  • 특징

    • 기본적으로 멤버는 public 접근 지정자
    • 단순 데이터 집합으로 설계됨
    • C++에서는 구조체 간 상속 가능
      • 구조체 상속을 잘 사용하지 않는 것처럼 보임

클래스(class)

  • 정의

    • 객체 지향 프로그래밍(OOP)의 핵심 요소
    • 데이터와 그 데이터를 처리하는 함수를 함께 묶는 사용자 정의 데이터 타입
    • C++에서 구조체보다 더 강력하고 유연한 기능 제공
  • 특징

    • 기본적으로 멤버는 private 접근 지정자
      • 멤버 변수 및 함수에 대한 직접적인 액세스를 제한
    • 캡슐화, 상속, 다형성과 같은 OOP 원칙 지원
    • 데이터와 메서드를 결합하여 복잡한 동작을 구현 가능

일반적인 차이점 (구조체 vs 클래스)

항목구조체 (struct)클래스 (class)
기본 접근 지정자publicprivate
용도단순 데이터 그룹데이터와 메서드 결합 (OOP)
상속제한적으로 사용지원 (OOP 원칙 포함)
복잡성간단한 데이터 구조복잡한 객체 모델 구현 가능