Ist Demo ein POD-Typ in C++ 03?Plain Old Datentypen mit privaten Mitgliedern?
struct Demo
{
private:
int x;
int y;
};
C++ 03, §9p4:
Ein POD-struct ist ein Aggregat Klasse, die nicht-POD-struct, nicht-POD-Union keine nicht-statische Datenelemente vom Typ besitzt (oder Array von solchen Typen) oder Referenz, und hat keinen benutzerdefinierten Kopierzuweisungsoperator und keinen benutzerdefinierten Destruktor.
Nach der Lektüre Steve Jessop's post, ich glaube Demo ein nicht-POD ist, weil die Mitglieder sind privat. Der Standard sagt jedoch nichts über die Beziehung zwischen POD-Typen und Zugriffsmodifizierern aus.
In C++ 0x Demo ist POD weil §9p9 (n3126) sagt:
A POD struct eine Klasse ist, die sowohl eine triviale Klasse und eine Standard-Layout-Klasse ist, und hat keine Nicht statische Datenelemente vom Typ Nicht-POD-Struktur, Nicht-POD-Vereinigung (oder Array solcher Typen).
Demo ist sowie eine Standard-Layout-Klasse trivial, so dass es ein POD ist. Ist meine Interpretation richtig?
Eine triviale Klasse ist eine Klasse, die eine triviale Standardkonstruktors (12.1) und ist trivially kopierbar ist. [9p5, n3126]
Ich würde zustimmen, dass es POD ist. Es scheint, dass Teile der Definition einander widersprechen, da ein Aggregat keine privaten Mitglieder haben kann, aber dann notiert nichts private Mitglieder anderswo. Ob die Mitglieder öffentlich oder privat sind, hat keinen Einfluss auf die Standardvergleichs- und -kopierkonstruktionen. Daher stimme ich zu, dass es sich um ein triviales und daher POD handelt. – JoshD