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 |