C++ में एग्रीगेट, ट्रिवियल टाइप और POD क्या हैं? वे कैसे काम करते हैं और क्यों ज़रूरी हैं?
सभी को नमस्ते! मैंने अभी C++ सीखना शुरू किया है और "एग्रीगेट", "ट्रिवियल टाइप" और "POD" शब्दों पर ठोकर खाई। सच कहूं तो, मैं उलझन में हूं। ऐसा लगता है कि ये सभी सरल struct का वर्णन करते हैं, लेकिन मुझे अंतर समझ नहीं आ रहा।
उदाहरण के लिए, मेरे पास यह कोड है:
```cpp
struct Point {
int x;
int y;
};
struct NamedPoint {
std::string name;
int x;
int y;
};
```
मैंने पढ़ा कि `Point` एक एग्रीगेट है, लेकिन `NamedPoint` नहीं है, क्योंकि इसमें `std::string` है। ऐसा क्यों? क्या चीज़ किसी टाइप को "ट्रिवियल" बनाती है? और "POD" क्या है? कहा जाता है कि POD टाइप को `memcpy` से कॉपी किया जा सकता है, लेकिन सामान्य टाइप को नहीं। क्या यह सच है?
साथ ही, मैंने सुना है कि C++17 और C++20 में एग्रीगेट के नियम बदल गए हैं। क्या आप सरल शब्दों में समझा सकते हैं कि कौन से टाइप एग्रीगेट, ट्रिवियल और POD हैं, और यह क्यों महत्वपूर्ण है?