Avatar ·

O que são agregados, tipos triviais e POD em C++? Como eles funcionam e para que servem?

Olá a todos! Comecei a estudar C++ e me deparei com os termos "agregado", "tipo trivial" e "POD". Para ser honesto, fiquei confuso. Parece que todos descrevem estruturas simples, mas não entendo a diferença. Por exemplo, tenho este código: ```cpp struct Point { int x; int y; }; struct NamedPoint { std::string name; int x; int y; }; ``` Li que `Point` é um agregado, mas `NamedPoint` não é, porque tem `std::string`. Por quê? O que torna um tipo "trivial"? E o que é "POD"? Dizem que tipos POD podem ser copiados com `memcpy`, mas os normais não. Isso é verdade? Também ouvi que em C++17 e C++20 as regras para agregados mudaram. Podem explicar de forma simples quais tipos são agregados, triviais e POD, e por que isso é importante para desempenho e compatibilidade com C? Exemplos com código seriam muito úteis. Obrigado desde já! <<>>

Resposta curta

Esses três conceitos — agregado, trivial e