POD (Plain Old Data) là class/struct chỉ có biến thành viên (member variables), không có phương thức, constructor, destructor, hàm ảo, v.v.
Ví dụ POD
#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 không có ctor/dtor do người dùng định nghĩa -> là POD.
Aggregate là mảng hoặc lớp không có constructor do người dùng khai báo, không có thành viên dữ liệu non-static private/protected, không có lớp cơ sở, không có hàm ảo.
Một aggregate class gọi là POD nếu nó không có toán tử gán sao chép (copy-assignment) và destructor do người dùng định nghĩa, và không có thành viên non-static nào là non-POD class, mảng non-POD, hoặc reference.