Que sont les agrégats, les types triviaux et POD en C++ ? Comment fonctionnent-ils et à quoi servent-ils ?
Bonjour à tous ! Je viens de commencer à apprendre le C++ et je suis tombé sur les termes « agrégat », « type trivial » et « POD ». Honnêtement, je suis confus. Ils semblent tous décrire des structures simples, mais je ne comprends pas la différence.
Par exemple, j'ai ce code :
```cpp
struct Point {
int x;
int y;
};
struct NamedPoint {
std::string name;
int x;
int y;
};
```
J'ai lu que `Point` est un agrégat, mais `NamedPoint` ne l'est pas, car il a un `std::string`. Pourquoi ? Qu'est-ce qui rend un type « trivial » ? Et qu'est-ce qu'un « POD » ? On dit que les types POD peuvent être copiés avec `memcpy`, mais pas les autres. Est-ce vrai ?
J'ai aussi entendu dire que les règles pour les agrégats ont changé en C++17 et C++20. Pouvez-vous expliquer simplement quels types sont des agrégats, triviaux et POD, et pourquoi c'est important pour la performance et la compatibilité avec C ? Des exemples de code seraient très utiles. Merci d'avance !
<<>>
Réponse courte
Ces trois concepts — agrégat, trivial et