구조체와 클래스 비교
Table of contents
구조체와 클래스는 모두 사용자 데이터 타입을 정의할 때 사용된다. 둘 다 멤버 변수와 함수를 가질 수가 있다는 공통점이 있지만 사용 용도와 접근 제어에서 차이점이 있다.
구조체(struct)
정의
- 관련된 데이터를 그룹화하여 하나의 사용자 정의 데이터 타입으로 정의하는 방법
- C: 데이터만 저장하는 용도로 사용
- 함수 저장이 불가능하지만 함수 포인터는 저장 가능
- 그러나 코드가 복잡해지고, 타입 안전성이 떨어짐
- C++: 함수(멤버 함수) 포함 가능, 클래스와 거의 동일한 기능 제공
특징
- 기본적으로 멤버는 public 접근 지정자
- 단순 데이터 집합으로 설계됨
- C++에서는 구조체 간 상속 가능
- 구조체 상속을 잘 사용하지 않는 것처럼 보임
클래스(class)
정의
- 객체 지향 프로그래밍(OOP)의 핵심 요소
- 데이터와 그 데이터를 처리하는 함수를 함께 묶는 사용자 정의 데이터 타입
- C++에서 구조체보다 더 강력하고 유연한 기능 제공
특징
- 기본적으로 멤버는 private 접근 지정자
- 멤버 변수 및 함수에 대한 직접적인 액세스를 제한
- 캡슐화, 상속, 다형성과 같은 OOP 원칙 지원
- 데이터와 메서드를 결합하여 복잡한 동작을 구현 가능
- 기본적으로 멤버는 private 접근 지정자
일반적인 차이점 (구조체 vs 클래스)
항목 | 구조체 (struct) | 클래스 (class) |
기본 접근 지정자 | public | private |
용도 | 단순 데이터 그룹 | 데이터와 메서드 결합 (OOP) |
상속 | 제한적으로 사용 | 지원 (OOP 원칙 포함) |
복잡성 | 간단한 데이터 구조 | 복잡한 객체 모델 구현 가능 |