POD (Plain Old Data) = class/struct ที่มี เฉพาะ member variables ไม่มี methods, constructors, destructors, virtual functions, base classes, private/protected non-static members
ตัวอย่าง POD
#include <iostream>
using namespace std;
struct MyStruct { // POD
int key;
string data; // string ไม่ใช่ POD แต่ใน C++11 string เป็น POD-compatible
};
int main() {
MyStruct s;
s.key = 1;
s.data = "hello";
return 0;
}
Aggregate
Array หรือ class ที่: ไม่มี user-declared constructors, ไม่มี private/protected non-static data members, ไม่มี base classes, ไม่มี virtual functions
POD vs Aggregate
Aggregate class เป็น POD ถ้า: ไม่มี user-defined copy-assignment/destructor และ non-static members ทั้งหมดเป็น POD
หมายเหตุ: นิยาม POD เปลี่ยนไปใน C++11/14/17/20 (กลายเป็น trivial + standard layout) บทความนี้อาจเก่าเล็กน้อย