Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++의 집합체(Aggregate)와 POD란 무엇일까?

POD는 C++에서 Plain Old Data(직역하면 '평범하고 오래된 데이터')를 뜻하는 약어입니다. 이름 그대로 C 스타일의 단순한 데이터 구조를 의미하며, 멤버 변수만 가지고 있고 메서드, 생성자, 소멸자, 가상 함수 등이 전혀 없는 클래스 또는 구조체를 말합니다.

예제 코드

#include<iostream>
using namespace std;

// POD
struct MyStruct {
    int key;
    string data;
};
int main() {
    struct MyStruct s;
    s.key = 1;
    s.data = "hello";
    return 0;
}

위 예제의 MyStruct는 사용자가 직접 정의한 생성자나 소멸자 등이 없기 때문에 POD에 해당합니다.

집합체(Aggregate)란 무엇인가?

집합체(aggregate)는 다음 조건을 모두 만족하는 배열 또는 클래스를 의미합니다.

  • 사용자가 선언한 생성자가 없을 것
  • private 또는 protected로 선언된 비정적(non-static) 데이터 멤버가 없을 것
  • 기반(base) 클래스가 없을 것
  • 가상 함수가 없을 것

집합체가 POD가 되는 조건

집합체 클래스는 아래 조건까지 추가로 충족할 경우 POD로 분류됩니다.

  • 사용자가 정의한 복사 대입 연산자(copy-assignment operator)와 소멸자가 없을 것
  • 모든 비정적 멤버가 비-POD 클래스, 비-POD 배열, 또는 참조(reference)가 아닐 것

즉, POD는 초기화와 복사가 단순하게 이루어지며 메모리 레이아웃이 예측 가능한 구조이기 때문에, C 언어와의 상호 운용성이 중요한 상황에서 특히 유용하게 활용됩니다.