[cpp] struct

minjubyeon·2025년 5월 20일

cpp

목록 보기
9/26
struct Base {
	Base() { std::cout << "Base constructor\n"; }
	virtual ~Base() { std::cout << "Base destructor\n"; }
};

→ Base라는 이름의 struct를 정의하고, 해당 구조체에 기본 생성자와 가상 소멸자를 선언 및 정의하였다.

1.struct

C++에서 struct는 사용자 정의 자료형으로, 여러 변수(멤버)를 하나로 묶을 수 있다. class와 거의 동일하지만, 기본 접근 지정자가 public이라는 차이점이 있다. 멤버 변수와 함수, 생성자, 소멸자 등도 포함할 수 있다. 상속과 다형성도 지원한다. 주로 간단한 데이터 구조를 정의할 때 사용된다.

⚠️ 차이점 (struct vs class)

구분structclass
기본 접근 지정자publicprivate
사용 목적주로 데이터 구조 표현주로 객체지향 프로그래밍
상속 기본 지정자publicprivate
문법 구조class와 동일struct와 동일
특징간단한 구조체에 주로 사용캡슐화와 추상화 중심의 설계


🔍 struct가 필요한 상황?

C++에서 class와 struct는 기능적으로 거의 동일하기 때문에, 둘 중 하나만 사용해도 대부분의 경우 문제가 없다. 하지만 struct가 특별히 유용한 상황도 존재한다.

상황설명
Plain Data 구조멤버가 모두 public이고, 단순히 데이터를 담기 위한 용도일 때 (struct가 더 직관적)
C 언어 호환성C와의 인터페이스에서 struct를 그대로 사용해야 하는 경우
연산자 오버로드 없이 데이터 묶기예: Point { int x, y; }, RGB { uint8_t r, g, b; } 등 단순 자료형 묶음
헤더에서 공개 데이터용외부 라이브러리에 전달할 단순 데이터 포맷 정의용으로 적합
초보자 가독성 향상struct는 기본 접근 지정자가 public이므로 초보자 입장에서 더 명확할 수 있음


🔚 결론

복잡한 클래스 설계(캡슐화, 상속, 다형성 등)를 한다면 class를 쓰는 것이 좋고, 단순한 데이터 컨테이너나 POD(Plain Old Data) 구조체라면 struct가 더 간결하고 가독성이 좋다.



profile
안녕하세요.

0개의 댓글