프로그래밍 언어/C++

C++ 구조체

· 코딩마이데이

C++ 구조체 선언

C++에서는 C 언어와의 호환성을 위해 구조체(struct)를 지원합니다. C++ 구조체는 표준 C 구조체에 기능을 확장하여 클래스와 동일한 구조와 기능을 가집니다. C++ 구조체는 struct 키워드로 선언하며, 멤버 변수와 멤버 함수를 가지고, 접근 지정도 해야 합니다.

struct structName {
     // 디폴트 접근 지정은 public, public 속성은 멤버 변수나 멤버 함수 선언
private:
     // private 속성의 멤버 변수나 멤버 함수 선언
public:
     // public 속성의 맴버 변수나 멤버 함수 선언
protected:
     // protected 속성의 멤버 변수나 멤버 함수 선언
};

 

C++ 구조체의 객체 생성

C++ 구조체의 객체 생성은 클래스 객체 선언 방식과 같이 구조체 타입 뒤에 객체 이름을 지정하면 됩니다. 다음은 structName 타입의 객체 stObj를 생성하는 예이며 C 언어와 달리 객체 생성 시 struct 키워드는 사용하지 않습니다.

structName strObj; // structName 타입의 구조체 객체 생성
struct structName strObj; // C++에서 컴파일 오류. struct 키워드 사용 불가

 

구조체와 클래스의 차이점

C++ 구조체는 클래스와 기능적으로 동일합니다. 멤버 변수뿐 아니라 생성자와 소멸자를 비롯한 멤버 함수를 가질 수 있으며, 다른 구조체나 클래스에게 상속 가능하고 다른 구조체나 클래스를 상속받을 수도 있습니다. 멤버들은 접근 지정자로 지정되며 멤버 활용 방법 또한 클래스와 완전히 동일합니다.

클래스와 구조체가 오직 한 가지 다른 점은, 클래스의 디폴트 접근 지정이 private인 반면, 구조체는 public입니다. 이는 C언어와의 호환성을 위해, 모든 멤버들이 공개적인 C 구조체를 C++에서 수용하기 위해서입니다.

 

ex3-10 Circle 클래스를 C++ 구조체를 이용하여 재작성

#include <iostream>
using namespace std;

struct StructCircle { // C++ 구조체 선언
private:
	int radius;
public:
	StructCircle(int r) { radius = r; } // 구조체의 생성자
	double getArea();
};

double StructCircle::getArea() {
	return 3.14 * radius * radius;
}

int main() {
	StructCircle waffle(3);
	cout << "면적은 " << waffle.getArea();
}

 

실행 결과

면적은 28.26

 

'프로그래밍 언어 > C++' 카테고리의 다른 글

바람직한 C++ 프로그램 작성법  (0) 2026.06.27
접근 지정  (0) 2026.06.21
소멸자 실행  (0) 2026.06.18
소멸자란?  (0) 2026.06.15
생성자는 꼭 있어야 하는가?  (0) 2026.06.12