소프트웨어/c++

c++ / 7. POD를 아십니까?

개발자_이훈규 2014. 10. 2. 17:40

c++ / 7. POD를 아십니까?

( 데이터 구조, Plain old data structure )






일을 하다가 알게된 개념으로 Array를 POD와 Non POD로 만들어진 2개의 사이에서 삽질을 하다가 알게된 개념입니다.


POD 또는 PODS. 이 개념은 C언어의 Struct나 built-in-type과 동일한 메모리 구조를 갖는 object를 의미합니다.

즉 memset이나 memcpy와 같은 단순 메모리 복사가 가능한 것인데 여기서 C++의 클래스와 다른 부분입니다.



 POD의 조건은 다음과 같습니다.

1. built-in-type

2. 가상 함수가 없고 사용자 정의 할당자와 소멸자를 갖지 않은 class의 object

3. non POD를 non-static 멤버로 가지지 않은 class의 object


만약 위 조건이 만족한다면 memcpy로 struct를 찍어내듯이 값을 이동시킬 수 있습니다.

하지만 아래와 같이 c++에서 많이 사용하는 class의 모습이라면 값을 복사한다고 하여도 동일한 속성을 갖지 못합니다.

즉, 물리적인 복사의 결과가 일치하지 않아질 수 있습니다.


http://1stpasa.tistory.com/entry/PODPlain-Old-Data-Non-POD

http://gpgstudy.com/forum/viewtopic.php?t=10148&view=previous

http://blog.daum.net/shuaihan/15856295



c++ / 7. POD를 아십니까? 끝.