Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Aggregates และ PODs ใน C++ คืออะไร


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) บทความนี้อาจเก่าเล็กน้อย