Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Aggregate và POD trong C++ là gì?


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.